Spring 向過濾器中注入javaBean

在使用過濾器的時(shí)候,一般我們都是在filter標(biāo)簽中配置 過濾器的 。

但是,當(dāng)需要在過濾器中注入Bean的時(shí)候,用這種配置方法,需要注入的對(duì)象就是一個(gè)null。
這里有個(gè)要注意的地方。filter的類中,需要注入的對(duì)象要自己set下,如果用注解的 話,會(huì)失敗,大概是因?yàn)閤ml優(yōu)先的原因吧。
所以這邊我們需要用另外一種配置的方法。如下:

web.xml中

 <filter>
        <filter-name>DelegatingFilterProxy</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetBeanName</param-name>
            <param-value>currentUserFilter</param-value><!-- 過濾器在spring中注冊的id -->        
        </init-param>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

applicationContext.xml配置:

       <!-- 配置過濾器 -->
   <bean id="currentUserFilter" class="com.onepay.filter.CurrentUserFilter"> 
   </bean> 

最后的filter類



public class CurrentUserFilter implements Filter {

    @Resource
    private UserService userService;

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        System.out.println("filter:"+userService);
        arg2.doFilter(arg0, arg1);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        
    }

    @Override
    public void destroy() {
        
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容