Доступ к бобам Spring от фильтров сервлета и тегов

Я могу получить доступ к бобам Spring в своем использовании Сервлетов

WebApplicationContext springContext = 
    WebApplicationContextUtils.getWebApplicationContext(getServletContext()); 

в Сервлете init метод.

Я задавался вопросом, там эквивалент WebApplicationContext для фильтров сервлета? Кроме того, действительно ли возможно получить доступ к бобам Spring в классе тега?

25
задан BalusC 27 April 2010 в 21:34
поделиться

3 ответа

Для фильтров - используйте Filter.init () :

public void init(FilterConfig config) {
    WebApplicationContext springContext = 
        WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
}

Для тегов - используйте TagSupport.pageContext (обратите внимание, что он недоступен в SimpleTagSupport ) :

WebApplicationContext springContext = 
    WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());
39
ответ дан 28 November 2019 в 18:13
поделиться

Вы можете поместить все ваши bean-компоненты в качестве атрибутов запроса с помощью оболочки ContextEsposingHttpServletRequest .

0
ответ дан 28 November 2019 в 18:13
поделиться

вы можете использовать DelegatingFilterProxy, как упоминается в документации Spring: http://static.springsource.org/spring-security/site/docs/3.0.x/reference/security-filter-chain.html#delegating-filter-proxy

Вы просто должны объявить свой настоящий Filter bean с тем же именем bean, что и имя filter-name, объявленное в web.xml:

web.xml:

    <filter>
       <filter-name>SpringTestFilter</filter-name>
       <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
       <filter-name>SpringTestFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>

applicationContext.xml:

    <bean id="SpringTestFilter" class="com.company.app.servlet.SpringTestFilter" />  
26
ответ дан 28 November 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: