自定义好了过滤器当然要使其在Spring Boot中生效了,该如何配置呢?
4条回答 默认 最新
仅此而已丶 2023-01-25 11:51关注1、配置类中使用@Bean注入【推荐使用】
其实很简单,只需要将 FilterRegistrationBean 这个实例注入到IOC容器中即可,如下:@Configuration public class FilterConfig { @Autowired private Filter1 filter1; @Autowired private Filter2 filter2; /** * 注入Filter1 * @return */ @Bean public FilterRegistrationBean filter1() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(filter1); registration.addUrlPatterns("/*"); registration.setName("filter1"); //设置优先级别 registration.setOrder(1); return registration; } /** * 注入Filter2 * @return */ @Bean public FilterRegistrationBean filter2() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(filter2); registration.addUrlPatterns("/*"); registration.setName("filter2"); //设置优先级别 registration.setOrder(2); return registration; } }注意:设置的优先级别决定了过滤器的执行顺序。
2、使用@WebFilter
@WebFilter 是Servlet3.0的一个注解,用于标注一个Filter,Spring Boot也是支持这种方式,只需要在
自定义的Filter上标注该注解即可,如下:@WebFilter(filterName = "crosFilter",urlPatterns = {"/*"}) public class CrosFilter implements Filter { //重写其中的doFilter方法 @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { //继续执行下一个过滤器 chain.doFilter(req, response); } }要想 @WebFilter 注解生效,需要在配置类上标注另外一个注解 @ServletComponentScan 用于扫描使其生
效,如下:```java @SpringBootApplication @ServletComponentScan(value = {"com.example.springbootintercept.filter"}) public class SpringbootApplication {}至此,配置就完成了,启动项目,即可正常运行。
```
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用