Что эквивалентно Global.getControllerInstance в Play 2.4?

Я переношу приложение (Scala) Play 2.3 на 2.4. Раньше у меня был самодельный механизм для создания объектов Controller, и я предоставлял их Play с помощью Global.getControllerInstance. Это больше не доступно в 2.4. Есть ли простой способ добиться такого же эффекта? Я бы предпочел не сразу переключаться на использование Guice.


person Matt R    schedule 17.07.2015    source источник


Ответы (1)


Одним из вариантов может быть использование фасада модуля Guice для обертывания собственного генератора контроллера. Вам просто нужно написать один класс Guice, который будет использоваться Play для внедрения созданных вами экземпляров без каких-либо других изменений.

Вот пример на Java. (Извините, у меня нет под рукой примера scala).

package com.example;
class ControllerProviderModule extends AbstractModule {

    @Provides
    MyController1 providesMyController1() {
        // Create MyController1 and return it.
    }

    @Provides
    MyController2 providesMyController2() {
        // Create MyController2 and return it.
    }

    @Override
    protected void configure() {
        // Alternatively, use other approaches to bind controller classes to your custom generated instances 
    }
}

Добавьте свой модуль в Play.

play.modules.enabled += "com.example.ControllerProviderModule"
person bravo2    schedule 20.07.2015