Spring/SpringBoot/SpringCloud過濾器配置(采用Bean方式配置,而非原生Servlet過濾器實現)


說明:

  1.  為了代碼簡潔, 使用了了Java8的lambda表達式,如果不想用的話可以使用匿名對象等方式更改(lambda表達式實際上也是對象)
  2. 可以使用該方式配置多個過濾器,但是需要給每一個Bean命名
  3. 與Servlet原生過濾器相比有好處也有不足,好處在於使用更靈活,更容易掌握,缺點是沒有init初始化以等方法(可能有,但是我不知道)
  4. 如有不足歡迎留言指正

示例代碼:

@Configuration
public class FilterBean {

  // 支持Spring注解注入
  @Value("${xxx.xxx}")
  String secret;

  /**
   * 可能有多個Filter,所有建議都給名字,否則會沖突
   *
   * @return
   */
  @Bean("filter1")
  public FilterRegistrationBean filter1() {
    FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter((request, response, chain)
-> {
request.setCharacterEncoding(
"utf8");
response.setCharacterEncoding(
"utf8");
// TODO 過濾器實現主體部分
chain.doFilter(request, response);
});
// 過濾器過濾路徑配置
registrationBean.addUrlPatterns("/*");
// 可省略
// registrationBean.setName("securityFilterRegistration1");
// 過濾器執行順序(可省略)
registrationBean.setOrder(2);
return registrationBean;
}
}

 


免責聲明!

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



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