【发布时间】:2013-01-23 19:56:07
【问题描述】:
我正在尝试对 servlet 过滤器进行弹簧注入。过滤器是引用的 jar 文件的一部分。所以。我无法将其更改为拦截器。在我的插件项目的 web.xml 中
<filter>
<filter-name>CustomFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>someinitparam</param-name>
<param-value>value to it</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CustomFilter</filter-name>
<url-pattern>/mywebservices/*</url-pattern>
</filter-mapping>
在spring.xml中我会这样使用
<bean id="CustomFilter" class="com.abc.CustomFilter"></bean>
spring.xml中已经配置了一些过滤器
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/mywebservices/*=some existing filters
</value>
</property>
</bean>
由于我已经在 web.xml 中指定了我的 url 模式,我是否需要在 filterChainProxy 中再次添加为
/mywebservices/**=CustomFilter, some existing filters
它会起作用吗?
请提出建议。
【问题讨论】:
-
会有用吗?你试过了吗?
-
嗯.. 听起来很棘手。 Spring 依赖注入通常是在 spring 上下文中创建的 beans 上完成的——而过滤器是由 java ee 服务器本身创建的。也许你能做的是——如果你能确定在你的 Filter 类被创建时 spring 上下文已经准备好了——尝试以某种方式获取对它的引用。顺便说一下,你能告诉我们更多关于你的应用程序的信息——做你使用 Spring MVC 吗?如果是这样,您可能不需要使用 servlet 过滤器
-
@TechExchange。我已经尝试过了,但它会导致我的应用程序出现严重错误。
-
@gerrytan。过滤器是 jar 文件之一的一部分。我正在使用 Jive 工具。仅基于它的 Spring MVC。
-
@User222 如果它导致严重错误,您应该说出它是什么。此外,您不应使用 Acegi Security,因为它已不再开发且不安全。
标签: java spring spring-mvc spring-security