springboot通過繼承OncePerRequestFilter,在攔截器中@Autowired 為null問題


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;

}

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM