Как заставить DI работать в веб-приложении? До сих пор я сделал следующее:
1) Метод аннотирования с помощью @Inject
2) Расширить AbstractModule
так, чтобы он связывал класс интерфейса с классом реализации для атрибута, установщик которого был аннотирован на шаге 1
3) Расширьте GuiceContextServletListener
и переопределите getInjector, чтобы он возвратил Guice.createInjector(new ExtendedAbstractModule())
4) Зарегистрированный расширенный GuiceContextServletListener
в web.xml
в качестве слушателя
Я убедился, что расширенный метод GuiceContextServletListener.getInjector()
вызывается при запуске веб-приложения. Атрибут, чей установщик был аннотирован, не внедряется и остается null
.