![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
illarion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.2.2009 Репутация: нет Всего: нет |
В нашем проекте было очень много примеров неправильного использования Spring IoC, вида:
Эти неявные зависимости я почти везде уже устранил, но столкнулся с тем, что в фильтры и сервлеты, жизненным циклом которых управляет контейнер (в нашем случае Tomcat), инжектить ничего нельзя. Официальная документация по этому поводу молчит. Как быть? Может кто-то уже сталкивался с такой ситуацией? |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Я недавно в сервлете бин доставал. Делал вот так
|
|||
|
||||
illarion |
|
||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.2.2009 Репутация: нет Всего: нет |
Это как раз пример того, как сделано сейчас. Это не совсем корректно и не совсем красиво. Если бы спринг умел инстанцировать сервлеты и фильтры сам, то можно было бы их объявить как обычные бины, настроив для них properties. В самом же коде сервлета были бы лишь простые сеттеры. |
||||
|
|||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Видел где-то, сейчас к сожалению не найти, пример, где расширялся класс HttpServlet, экземпляры которого могли потом использоваться как простые бины, котрым было достаточно сеттеров. Т.е. то что вам надо. Советую поискать. Можно конечно самому попробывать реализовать ![]() |
|||
|
||||
_sten_ |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 29.9.2006 Репутация: 3 Всего: 3 |
думаю стоит почитать о Spring MVC
--------------------
WARNING: Condition 'to_be || !to_be' is always 'true' ! |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Иногда полный Spring MVC бывает лишним, например нужен всего один сервлет для обработки ajax запросов, а в этот сервлет надо проинжектить объект какого-либо сервиса. illarion, я кстати нашел ссылку. Метод номер 3 http://andykayley.blogspot.com/2007/11/how...beans-into.html |
|||
|
||||
MisterCleric |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
А чем этот способ отличается от:
То же самое только инкапсулировано в определенном классе. Я, к стати, тоже интересовался такими методами "автоваринга" для связки EJB3+Spring и там есть что-то подобное показанное garbuz. Вешается на EJB интерцептор, который и будет производить инъект Spring-бинов в проперти, помеченные как @Autowired Я думаю, все-таки, в данном случае надо смотреть в сторону Spring MVC. Да, что бы далеко не ходить даже спринговцы используют "бракуемый" в данной теме способ. Вот пример исходников одного из их классов:
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
||||||
|
|||||||
magicfly |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 21.2.2007 Репутация: 1 Всего: 1 |
http://www.acegisecurity.org/acegi-securit...oBeanProxy.html
есть такая вещь, используется как видно в spring-security. Возможно стоит покопать туда |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет.
Нашел: тебе действительно ничего писать не надо. Есть такой класс у Spring:
где имя фильтра имя бина в Spring-контексте. Добавлено через 4 минуты и 17 секунд Твой бин всего лишь должен быть как " implements Filter", а дальше делаешь свои инджекшены как обычно -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
illarion |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.2.2009 Репутация: нет Всего: нет |
Что же касается сервлета, то все еще проще - он должен реализовывать интерфейс HttpRequestHandler
в application context пишем:
а в web.xml пишем такое:
|
||||||
|
|||||||
illarion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.2.2009 Репутация: нет Всего: нет |
В общем, в итоге в проекте осталсь лишь SessionListener и еще парочку, в которые непонятно как инжектить. Фильтры и сервлеты работают через HttpRequestHandlerServlet и DelegatingFilterProxy.
|
|||
|
||||
Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 1 Всего: 10 |
Если приложение большое, то, как советовали выше, нужно глядеть в сторону SpringMVC или другого MVC framework.
-------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |