@WebFilter注入失败

如下//@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;
}
}

这样就能解决过滤器注入失败的问题了

 
posted @ 2021-07-13 14:51  大宇007  阅读(414)  评论(0编辑  收藏  举报