Я могу получить доступ к бобам Spring в своем использовании Сервлетов
WebApplicationContext springContext =
WebApplicationContextUtils.getWebApplicationContext(getServletContext());
в Сервлете init
метод.
Я задавался вопросом, там эквивалент WebApplicationContext
для фильтров сервлета? Кроме того, действительно ли возможно получить доступ к бобам Spring в классе тега?
Для фильтров - используйте Filter.init ()
:
public void init(FilterConfig config) {
WebApplicationContext springContext =
WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
}
Для тегов - используйте TagSupport.pageContext
(обратите внимание, что он недоступен в SimpleTagSupport
) :
WebApplicationContext springContext =
WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());
Вы можете поместить все ваши bean-компоненты в качестве атрибутов запроса с помощью оболочки ContextEsposingHttpServletRequest
.
вы можете использовать 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" />