9

我正在尝试对 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

它会起作用吗。

请建议。

4

2 回答 2

14

您可以像在 web.xml 中一样配置过滤器

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

<filter-mapping>
   <filter-name>CustomFilter</filter-name>
   <url-pattern>/mywebservices/*</url-pattern>
</filter-mapping>

然后在 spring.xml 中注入属性

<bean id="CustomFilter" class="com.abc.CustomFilter">
   <property name="someParameter">
      <value>some value</value>
   </property>
</bean>
于 2013-02-08T08:06:46.400 回答
0

我认为你不能在 spring 上下文之外注入 bean,并且你的 servlet 过滤器在 spring 上下文之外。如果您想在上下文中使用过滤器,那么我建议您使用 spring web 拦截器。这些拦截器在 spring 上下文中,您可以通过这些拦截器利用 spring 容器功能。

于 2013-02-08T05:39:49.650 回答