以下//@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