锐客网

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解决方法】



    springboot