Springboot 中 Filter 无法直接获取Bean与无法使用@Value解决方法
问题发现:在本地开发调试时正常,但发布到tomcat时,Filter无法通过@Value获取配置值。
问题造成原因:容器加载顺序导致, 加载顺序:Listener——Filter——Servlet,当项目启动时,filter初始化先于servlet, 而Spring中Bean初始化是在Servlet后,导致在Filter中无法注入。
解决方法:将filter添加到spring容器
1、去掉Filter类多余的注解,将注解改为:@Component
@Component
public class AuthFilter implements Filter {}
2、新增配置类 : WebConfig ;并将类注解为:@Configuration
@Configuration
public class WebConfig {@Autowired
private AuthFilter authFilter;
@Bean
public FilterRegistrationBean authFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(authFilter);
registration.addUrlPatterns("/*");
registration.setName("authFilter");
registration.setOrder(1);
return registration;
}}
【Springboot 中 Filter 无法直接获取Bean与无法使用@Value解决方法】
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- Activiti(一)SpringBoot2集成Activiti6
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募