美文网首页
Spring 向过滤器中注入javaBean

Spring 向过滤器中注入javaBean

作者: LH_0811 | 来源:发表于2017-01-12 09:42 被阅读194次

    在使用过滤器的时候,一般我们都是在filter标签中配置 过滤器的 。

    但是,当需要在过滤器中注入Bean的时候,用这种配置方法,需要注入的对象就是一个null。
    这里有个要注意的地方。filter的类中,需要注入的对象要自己set下,如果用注解的 话,会失败,大概是因为xml优先的原因吧。
    所以这边我们需要用另外一种配置的方法。如下:

    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() {
            
        }
    
    }
    

    相关文章

      网友评论

          本文标题:Spring 向过滤器中注入javaBean

          本文链接:https://www.haomeiwen.com/subject/geddbttx.html