Spring boot中如何定义过滤器Filter

最近刚刚接手使用spring boot,真是一个开发很顺手的工具。在这里总结一下自己发现的基于@Configuration的注解定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package example.hello;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class WebConfig {
@Bean
public FilterRegistrationBean greetingFilterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setName("greeting");
GreetingFilter greetingFilter = new GreetingFilter();
registrationBean.setFilter(greetingFilter);
registrationBean.setOrder(1);
List<String> urlList = new ArrayList<String>();
urlList.add("/abc");
registrationBean.setUrlPatterns(urlList);
return registrationBean;
}
@Bean
public FilterRegistrationBean helloFilterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setName("hello");
HelloFilter helloFilter = new HelloFilter();
registrationBean.setFilter(helloFilter);
registrationBean.setOrder(2);
return registrationBean;
}
/*
@Bean
@Order(1)
Filter greetingFilter() {
return new GreetingFilter();
}
@Bean
@Order(2)
public Filter helloFilter() {
return new HelloFilter();
}*/
}

其中GreetingFilterHelloFiter是定义的简单的打印字符串过滤器。在@Configuration中,声明注解@Bean相当于在Spring老版本中在配置文件中声明一个Bean。

在这里展示了两种过滤器声明方式,第一种利用FilterRegistrationBean可以详细地更好地详细的定义过滤器。第二种注释掉的,声明方式更简单,代码更加简洁。

在这里也咨询大家一个问题,用第二种方式如何声明UrlPattern呢,貌似没有相关的注解

一个java web程序员,希望自己两年之内能成为data scientist,正在找工作