package com.springboot.demo.config;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.springboot.demo.filter.TestFilter1;
import com.springboot.demo.filter.TestFilter2;
@Configuration
public class TestConfiguration {
@Bean
public FilterRegistrationBean b() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new TestFilter2());
filterRegistrationBean.addUrlPatterns("/test1");
filterRegistrationBean.setOrder(1);
return filterRegistrationBean;
}
@Bean
public FilterRegistrationBean a() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new TestFilter1());
filterRegistrationBean.addUrlPatterns("/test1");
filterRegistrationBean.setOrder(0);
return filterRegistrationBean;
}
}
package com.springboot.demo.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class TestFilter1 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("执行 TestFilter1 的 init 方法!");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("执行 TestFilter1 的 doFilter 方法!");
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("执行 TestFilter1 的 destroy 方法!");
}
}
package com.springboot.demo.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class TestFilter2 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("执行 TestFilter2 的 init 方法!");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("执行 TestFilter2 的 doFilter 方法!");
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("执行 TestFilter2 的 destroy 方法!");
}
}
package com.springboot.demo.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@PostMapping(path="/test1")
@ResponseBody
public String test1() {
System.out.println("Hello test1!");
return "Hello test1!";
}
}
执行结果:
执行 TestFilter1 的 doFilter 方法!
执行 TestFilter2 的 doFilter 方法!
Hello test1!