写一个类实现过滤器接口
@Slf4j
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info("----------------------过滤器执行-----------------------");
// 放行
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
写一个配置类将通过方法将 过滤器注入容器(我是这样理解的)
package com.csy.springbootpro1.config;
import com.csy.springbootpro1.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import java.util.ArrayList;
import java.util.List;
/**
* @Configuration 表示配置类这个类的作用与applicationContext.xml作用一直 在springboot项目中可以有多个配置类
* 多个作用 放便维护
* 配置类中通过编写方法实现创建各种bean,方法必须是public的,不然不能被调用
* 加上@Bean
*/
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<MyFilter> registrationBean(){
// 该对象是用来将自定义的过滤器注册到springboot过滤器链中的
FilterRegistrationBean<MyFilter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
// 设置过滤器
filterFilterRegistrationBean.setFilter(new MyFilter());
// 设置过滤哪些请求
List<String> list = new ArrayList<>();
list.add("/*");
filterFilterRegistrationBean.setUrlPatterns(list);
//配置过滤器执行的顺序 (这里是最先执行)
filterFilterRegistrationBean.setOrder(0);
return filterFilterRegistrationBean;
}
}
这里面比较重要的就是通过@Configuration 创建也给配置类了 @Bean
可以参考这里 blog.csdn.net/u010142437/…