(转)Springboot 中filter 注入对象
2024-10-14 17:50:30
问题:我建立一个全局拦截器,当然,这是测试的时候建立的,我把它命名为LogFilter,它继承了Filter,web应用启动的顺序是:listener->filter->servlet,而因为项目应用了springboot,所以我们项目启动时,先初始化listener,因此注解的bean会被初始化和注入;然后再来就filter的初始化,再接着才到我们的dispathServlet的初始化,因此,当我们需要在filter里注入一个注解的bean时,就会注入失败,因为filter初始化时,注解的bean还没初始化,没法注入。
那么,解决方法如下:
public FilterRegistrationBean filterProxy(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
DelegatingFilterProxy httpBasicFilter = new DelegatingFilterProxy();
registrationBean.setFilter(httpBasicFilter);
Map<String,String> m = new HashMap<String,String>();
m.put("targetBeanName","logFilter");
m.put("targetFilterLifecycle","true");
registrationBean.setInitParameters(m);
List<String> urlPatterns = new ArrayList<String>();
urlPatterns.add("/*");
registrationBean.setUrlPatterns(urlPatterns);
return registrationBean;
}
这样你就可以在LogFilter里面添加@Autowired下的bean了。
public class LogFilter implements Filter {
@Autowired
@Qualifier(value="rztRabbitTemplate")
private RabbitTemplate rabbitTemplate;
@Bean
public FilterRegistrationBean securityFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new DelegatingFilterProxy("SecurityFilter"));
registration.addInitParameter("targetFilterLifecycle", "true");
registration.addUrlPatterns("/*");
registration.setOrder(102);
return registration;
} @Bean(name = "SecurityFilter")
public SecurityFilter getSecurityFilter(){
return new SecurityFilter();
}
转自:http://blog.csdn.net/u013030980/article/details/55270818#comments
最新文章
- 无法卸载jdk的解决方法
- java四舍五入的取舍
- 12 Tips for Accurate Project Estimating
- asp.net MVC4 lognet4 日志
- vs2012 遇到 “此操作要求使用 IIS 集成管线模式。”
- eay ui iframe 下常问题
- Python爬虫第一步
- JUnit三分钟教程 ---- 实际应用
- php 图片等比缩放
- (转)关于BigDecimal 转化字符串toPlainString()和toString()的区别
- hihocoder_1014: Trie树(Trie树模板题)
- C#_Demo_摄像头实时_4线程人脸识别注册开发全过程
- pom-4.0.0.xml中心仓库
- 虚拟机安装的Winserver 2008 R2系统,宿主机无法ping通主机
- Python深度学习之安装theano(windows)
- [BZOJ1494]生成树计数
- C# 取时间段年、月、日、季度
- ASP.NET与.NET区别
- 分享一个settings.xml
- 【题解】洛谷P2822 [NOIP2016TG ]组合数问题 (二维前缀和+组合数)