spring Filter中注入bean
2016-12-18 11:36
381 查看
遇到朋友在filter中用@autowired注入,得到的对象是null,于是根据自己项目中的使用,提供了下列解决方法。
1.web.xml中配置
2.spring bean中配置:
3.实现类
ps. 简单描述一下:
java web项目启动加载顺序为:
context-param -> listener -> filter -> servlet
项目启动时,先初始化listener,然后是filter的初始化,最后才是servlet的初始化(这和web.xml配置文件中他们所对应的先后顺序无关,但针对于某类配置而言,与他们出现的顺序是有关的),因此,当我们在filter里使用注解注入一个bean时,就会注入失败,因为filter在初始化的时候,注解的bean还没有被初始化,所以会出现注入对象为null的情况。
解决办法应该有多种,针对上述解决办法,filter加入org.springframework.web.filter.DelegatingFilterProxy类,DelegatingFilterProxy类是一个代理类,所有的请求都会首先发给这个代理,然后再按照“filter-name”委派到spring中的这个bean,因此要Spring中配置的bean的name和web.xml中的一样.
1.web.xml中配置
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <filter> <filter-name>AuthFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2.spring bean中配置:
<bean id="AuthFilter" class="**.**.***.******.filter.AuthFilter"> <property name="authService" ref="authService"></property> </bean>
3.实现类
ps. 简单描述一下:
java web项目启动加载顺序为:
context-param -> listener -> filter -> servlet
项目启动时,先初始化listener,然后是filter的初始化,最后才是servlet的初始化(这和web.xml配置文件中他们所对应的先后顺序无关,但针对于某类配置而言,与他们出现的顺序是有关的),因此,当我们在filter里使用注解注入一个bean时,就会注入失败,因为filter在初始化的时候,注解的bean还没有被初始化,所以会出现注入对象为null的情况。
解决办法应该有多种,针对上述解决办法,filter加入org.springframework.web.filter.DelegatingFilterProxy类,DelegatingFilterProxy类是一个代理类,所有的请求都会首先发给这个代理,然后再按照“filter-name”委派到spring中的这个bean,因此要Spring中配置的bean的name和web.xml中的一样.
相关文章推荐
- Spring-boot中Filter注入bean
- 在filter注入或者是得到spring托管的bean
- 如何让servelt和Filter注入到spring容器或者在servlet中调用spring中的bean
- 通过spring在filter注入bean(DelegatingFilterProxy与servlet filter)
- 非spring组件servlet、filter、interceptor中注入spring bean
- web Filter中使用spring注入的bean
- Web Filter中使用Spring注入bean elegatingFilterProxy
- 通过spring在filter注入bean(DelegatingFilterProxy与servlet filter) .
- web Filter中使用spring注入的bean
- JAVA WEB 过滤器(Filter)中向容器 Spring 注入 bean
- spring--filter如何注入 spring管理的bean(54)
- Spring(四)Bean注入方试
- 从spring容器中取出注入的bean
- Spring bean属性注入(构造器)
- 【第十二章】零配置 之 12.1 概述 12.2 注解实现Bean依赖注入 ——跟我学spring3
- Spring4-三种方式注入值到 bean 属性
- Spring项目获取注入bean集合
- Spring源码学习--Bean注入解析结果BeanDefinition
- Spring中Bean属性为集合的注入方式
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-007-给BEAN运行时注入值placeholder、@Value