Spring Framework过滤器,bean没有注入

时间:2010-10-02 20:35:59

标签: java spring jboss spring-mvc servlet-filters

Servlet过滤器有两个条目,一个在web.xml中,另一个在Spring applicationContext.xml

我将过滤器添加到applicationContext.xml中,因为我想将creditProcessor bean注入其中。

唯一的问题是web.xml中的条目被JBoss拾取然后使用,因此creditProcessor为null。

我是否必须使用Spring的delegatingFilterProxy或类似的东西,以便我可以将东西注入bean中,或者我可以调整web.xml吗?

的web.xml:

<filter>
    <filter-name>CreditFilter</filter-name>
    <filter-class>credit.filter.CreditFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>CreditFilter</filter-name>
    <url-pattern>/coverage/*</url-pattern>        
</filter-mapping>

弹簧的applicationContext.xml:

<bean id="creditFilter" class="credit.filter.CreditFilter" >
      <property name="creditProcessor" ref="creditProcessor"/>
</bean>

1 个答案:

答案 0 :(得分:12)

你不能像这样管理过滤弹簧。使用您的设置,它将由spring实例化一次,并由servlet容器实例化一次。相反,请使用DelegatingFilterProxy

  1. 将过滤器代理声明为web.xml
  2. 中的<filter>
  3. 设置过滤器定义的targetBeanName init-param以指定应该实际处理过滤的bean:

    <init-param>
        <param-name>targetBeanName</param-name>
        <param-value>creditFilter</param-value>
    </init-param>