Spring Framework过滤器,bean未注入

Posted

技术标签:

【中文标题】Spring Framework过滤器,bean未注入【英文标题】:Spring Framework filter, bean not injected 【发布时间】:2011-04-20 07:58:51 【问题描述】:

Servlet Filter 有 2 个条目,一个在 web.xml 中,一个在 Spring applicationContext.xml 中

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

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

我是否必须使用 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>

Spring-applicationContext.xml:

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

【问题讨论】:

【参考方案1】:

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

    在 web.xml 中将过滤器代理声明为 &lt;filter&gt;

    设置过滤器定义的targetBeanNameinit-param 来指定实际处理过滤的bean:

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

【讨论】:

以上是关于Spring Framework过滤器,bean未注入的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring Framework——Bean注册Bean依赖注入

初识Spring Framework——Bean注册Bean依赖注入

Spring Framework 是不是带有自己的 bean?

Spring Framework:可以在没有@Configuration的情况下创建相同@Component的两个bean吗?

Spring Framework学习笔记

Spring Framework学习笔记