Что является эквивалентом глобального.getControllerInstance в Play 2.4?


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

1 2

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.modules.enabled += "com.example.ControllerProviderModule"