SpringBoot2.1中添加过滤器配置
1:自定义过滤器
使用@Component 向spring 容器注入一个bean
package com.dev.filter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; /** * Created by zgq7 on 2019/6/6. */ @Component public class BaseFilter implements Filter { private static final Logger log = LoggerFactory.getLogger(BaseFilter.class); @Override public void init(FilterConfig filterConfig) throws ServletException { Map
2:配置类
package com.dev.config; import com.dev.filter.BaseFilter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.*; /** * Created by zgq7 on 2019/6/6. */ @Configuration public class SpringConfig { @Bean public FilterRegistrationBeanfilterFilterRegistrationBean(BaseFilter baseFilter) { FilterRegistrationBean filterFilterRegistrationBean = new FilterRegistrationBean<>(); //拦截路径配置 List uriList = new ArrayList<>(10); uriList.add("/dev/*"); filterFilterRegistrationBean.setFilter(baseFilter); filterFilterRegistrationBean.setEnabled(true); filterFilterRegistrationBean.setUrlPatterns(uriList); filterFilterRegistrationBean.setName("baseFilter"); filterFilterRegistrationBean.setOrder(1); return filterFilterRegistrationBean; } }
3:测试Controller
package com.dev.controller; import com.google.common.collect.ImmutableMap; import org.springframework.web.bind.annotation.*; import java.util.Map; /** * Created by zgq7 on 2019/6/6. */ @RestController @RequestMapping(value = "/dev") public class BaseController { @GetMapping(value = "") public Mapget() { return ImmutableMap.of("code", "get"); } @PutMapping(value = "t") public Map t() { return ImmutableMap.of("code", "put"); } @PostMapping(value = "s") public Map s() { return ImmutableMap.of("code", "post"); } }
4:postMan 测试
5:控制台拦截器日志
输出该日志是因为过滤器拦截到了 /dev 路径下的请求才输出的。可自行测试哦~~~
6:这么做的好处
①:Filter 是基于Tomcat 容器的,无法访问Spring 容器中的Bean。
②:以这种方式向Spring容器中注入Filter 拦截器后,是可以访问到容器中的Bean的。如数据源、某个Service 等。