springboot2版本以上環境
通過繼承OncePerRequestFilter類,在重寫doFilterInternal方法實現攔截的具體業務邏輯,
在實現的過程中,需要注入service方法,但發現獲取到server總是為null值。
解決方案:
1、在自定義攔截器類中,通過構造方法方式,將server方法注入進去
private xxxServer xxx;
public xxxFilter(xxxServer _xxx) {
this.xxx = _xxx;
}
2、在攔截器配置類中,在server變量使用@Autowired注解,將自定義的攔截器注冊即可
@Autowired
xxxService xxx;
@Bean
public FilterRegistrationBean<XXXFilter> perssionFilterRegister() {
FilterRegistrationBean<XXXFilter> registration = new FilterRegistrationBean<XXXFilter>();
registration.setFilter(new XXXFilter(xxx)); //注冊攔截器
registration.addUrlPatterns("/*"); //攔截的URL
registration.setName("filterName");
registration.setOrder(1); //設置該攔截器執行的順序
return registration;
}