Я использую шаблон торта для внедрения зависимостей между компонентами в приложении play 2.2.1. Приложение состоит из игровых контроллеров, и мы используем пользовательский ActionBuilder
для открытия нашего сеанса БД. В настоящее время мы передаем этот сеанс БД обратно на уровень нашей модели через уровни контроллера и DAO в качестве неявного аргумента. (ActionBuilder -> Контроллер -> DAO -> Модель Slick)
Я использую play-slick для плавной интеграции и пытаюсь использовать подход DAO для инкапсуляции доступа к нашим гладким моделям. Наши DAO имеют несколько определений функций, таких как findById(id: Int)(implicit s: Session): Option[Entity]
. Я хотел бы избежать этого неявного параметра сеанса в каждом отдельном определении функции, внедрив компонент, извлекающий DBSession. Этот компонент будет вызываться внутри функциональных блоков DAO каждый раз для получения текущего сеанса БД запроса.
Исходя из мира Java и Spring, я точно не знаю, как этого добиться, учитывая, что я, вероятно, не могу полагаться на какой-либо прокси-сервер с областью действия ThreadLocal.
Есть идеи, как я смогу этого добиться? Это хорошая или плохая идея?