class MyRequest {
}
class MyResponse {
}
interface Filter{
void doFilter(MyRequest myRequest, MyResponse myResponse, ApplicationFilterChain filterChain);
}
class ApplicationFilterChain {
private Integer index = 0;
private List<Filter> filters=new ArrayList<>();
public void addFilter(Filter filter){
this.filters.add(filter);
}
public void doFilter(MyRequest myRequest, MyResponse myResponse) {
if(index<this.filters.size()){
Filter filter=this.filters.get(index++);
filter.doFilter(myRequest, myResponse, this);
}else{
System.out.println("-------------过滤脸执行结束!------------------");
}
}
}
@SpringBootTest
public class FilterchainTests {
@Test
public void method() {
Filter encodingFilter=new Filter() {
@Override
public void doFilter(MyRequest myRequest, MyResponse myResponse, ApplicationFilterChain filterChain) {
System.out.println("---------------encodingFilter执行了---------------");
filterChain.doFilter(myRequest,myResponse);
}
};
Filter requestcontextFilter=new Filter() {
@Override
public void doFilter(MyRequest myRequest, MyResponse myResponse, ApplicationFilterChain filterChain) {
System.out.println("---------------requestcontextFilter执行了---------------");
filterChain.doFilter(myRequest,myResponse);
}
};
ApplicationFilterChain applicationFilterChain=new ApplicationFilterChain();
applicationFilterChain.addFilter(encodingFilter);
applicationFilterChain.addFilter(requestcontextFilter);
applicationFilterChain.doFilter(new MyRequest(), new MyResponse());
}
}