2016-08-14 3 views
0

У меня есть существующее приложение, в котором есть куча предустановленных статических объектно-ориентированных контроллеров до 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 не сразу очевидны для меня.

ответ

0

Тишина (с точки зрения ответов) указывает на то, чего я уже боялся: я был на конечности.

Смешивание и согласование маршрутов возможно теоретически, для этого потребуется некоторое вуду, глубоко связанное с тонкостями игры, которые я бы никому не рекомендовал.

То, что я сделал сейчас, это просто перенести все мои контроллеры и их соавторов на «время компиляции DI». Это было довольно большое занятие, и тот факт, что я был вынужден сделать это, свидетельствует о практичности путей обновления, предоставляемых Play.

 Смежные вопросы

  • Нет связанных вопросов^_^