Я создаю приложения с помощью Play Framework и Scala, и это приложение с использованием неявнойПочему нам нужно неявное Application
play.api.Application
почему нам нужно это приложение в нашей области?
Заранее спасибо
Я создаю приложения с помощью Play Framework и Scala, и это приложение с использованием неявнойПочему нам нужно неявное Application
play.api.Application
почему нам нужно это приложение в нашей области?
Заранее спасибо
Это архитектурный выбор, который был сделан разработчиками. Существуют определенные компоненты структуры, которые требуют ссылки на Application
(обычно текущий текущий Application
). Кэш, БД, Сообщения (i18n), Evolutions и WS API - первые, которые приходят на ум.
Значок Application
является неотъемлемой частью работающего приложения Play. Он предназначен для хранения конфигурации приложения, маршруты, ссылки на плагинов, GlobalSettings
объекта, ведение журнала прикладной и т.д.
Например, когда я назвать:
DB.withConnection { implicit c =>
...
}
мне нужно иметь play.api.Play.current
в объеме (текущий текущий Application
). Зачем? Он знает, где загружается DBApi
, и другие параметры конфигурации базы данных, если они понадобятся.
Аналогично, когда я звоню play.api.cache.Cache.set(...)
, мне нужен неявный Application
, чтобы API-интерфейс кеша мог определить, какие плагины кэша загружены и какой из них использовать.
Почему эти API не просто ссылаются на текущий текущий Application
? На самом деле бьется. Это определенно повредило бы модульности, чтобы повсюду иметь жестко закодированную ссылку Application
. Я полагаю, вы можете иметь несколько запущенных приложений для тестов и т. Д. Я помню, что читал, что play.api.Play.current
может уйти в будущих версиях, чтобы устранить необходимость сохранения глобального состояния, хотя я не могу найти источник.
Это в дорожной карте для 3.0: https://docs.google.com/document/d/11sVi1-REAIDFVHvwBrfRt1uXkBzROHQYgmcZNGJtDnA/pub – Ryan