Использование пикоконтейнера с сервлетами Tomcat

Я пытаюсь использовать PicoContainer в приложении на основе сервлетов, работающем на Tomcat. Конфигурация, очевидно, работает в режиме отладки, но, как я и предполагал, классы сервлетов не вводятся construnctor и соседями setter. Разве классы сервлетов не должны вводиться? Если нет, как я могу использовать контейнер в приложении на основе сервлетов?

1 ответ

Решение

Там нет контейнера IoC, который фактически вводит сервлеты. В твоем случае они созданы экземпляром tomcat. Типичными компонентами Pico являются контроллеры, DAO, компоненты бизнес-логики и т. Д.

Вы можете реализовать свое веб-приложение двумя способами:

1) поставить пикофильтр в игру: ваши контроллеры должны быть компонентами области запроса, реализующими интерфейс жизненного цикла. Таким образом, в такой компонент будет вставлен запрос, а затем start() будет вызван контейнером. На самом деле при таком подходе у вас не будет сервлетов вообще. Вероятно, имеет смысл иметь один контроллер маршрутизатора в области запроса, который будет делегировать конкретную обработку URL другим компонентам контейнера.

2) как вы сказали, ScopedContainers скрывает контейнеры для внешнего кода, поэтому вы должны написать свой собственный PicoServletContainerListener (просто взять существующий исходный код и сделать контейнеры с областями видимости доступными для вашего кода). В этом методе вы можете написать обычные сервлеты и делегировать их компонентам pico.

Другие вопросы по тегам