以下//@WebFilter(urlPatterns = {"/xxx/*"}, filterName = "playerFilter")
在使用@WebFilter注解的时候,本地测试是能够获取注入的值的,可是上线以后发现并无获取到值.
通过查询原来是springboot项目并无在Tomcat下运行,当托管到Tomcat上的时候就报错了
解决办法:
一、注释掉@WebFilter注解,
public class MyFilter implements Filter { @Value("${wechat.appid}") private String appid; //省略逻辑代码 ... }
2. 重写一个配置类MyConfig,而后把自定义的过滤器类经过配置类注入@Configurationjava
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;
}
}
这样就能解决过滤器注入失败的问题了spring