如下//@WebFilter(urlPatterns = {"/xxx/*"}, filterName = "playerFilter")
在使用@WebFilter注解的时候,本地测试是可以获取注入的值的,但是上线之后发现并没有获取到值.
经过查询原来是springboot项目并没有在Tomcat下运行,当托管到Tomcat上的时候就报错了
解决办法:
1、注释掉@WebFilter注解,
public class MyFilter implements Filter { @Value("${wechat.appid}") private String appid; //省略逻辑代码 ... }
2. 重写一个配置类MyConfig,然后把自定义的过滤器类通过配置类注入@Configuration
public class MyConfig implements WebMvcConfigurer { @Bean public Filter myFilter() { return new MyFilter(); }
/**
* 通过 DelegatingFilterProxy委托过滤器代理来获取前面注入的过滤器
*/
@Bean public FilterRegistrationBean uploadFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new DelegatingFilterProxy("myFilter")); registration.addUrlPatterns("/*"); registration.setName("myFilter");
//registration.setOrder(1);
// ......
return registration;
}
}
这样就能解决过滤器注入失败的问题了