У меня есть существующее приложение, в котором есть куча предустановленных статических объектно-ориентированных контроллеров до 2.4, которые я сейчас не хочу касаться.Смешивание существующих статических маршрутов Play с новыми экземплярами контроллера с инкапсулированными инстанциями с компиляцией времени
Между тем, я хочу добавить некоторые новые функции и контроллеры, но в новом коде я хочу использовать парадигму, которую Play-people называют инъекцией «компиляция-время».
Для этого эффекта я имею установку некоторых основных проводов согласно the documentation:
class MyApplicationLoader extends ApplicationLoader {
def load(context: Context) = {
Logger.info("initializing the application in play 2.4-style")
new MyComponents(context).application
}
}
class MyComponents(context: Context) extends BuiltInComponentsFromContext(context) {
lazy val router: play.api.routing.Router = ???
lazy val someNewController = new SomeNewController(new SomeComponent())
}
Проблема с настройкой/реализации маршрутизатора.
Я бы хотел, чтобы он взял все сгенерированные маршруты (из файла существующих маршрутов) и добавил новый маршрут, обработанный SomeNewController
.
Это мое понимание, что я не могу добавить SomeNewController
в файл маршрутов с помощью @syntax, потому что предполагается, что я буду использовать то, что Play вызывает «runtime DI» с помощью Guice, чего я не хочу делать.
Как сохранить существующие маршруты и добавить новый для экземпляра someNewController
, по существу, слияния их?
Я думаю, я должен создать экземпляр play.api.routing.Router
и заполнить его с маршрутами, которые живут в созданном router.Routes
объекте, и добавив запись для SomeNewController, но API не сразу очевидны для меня.