本文共 3275 字,大约阅读时间需要 10 分钟。
使用@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. */@Componentpublic class BaseFilter implements Filter { private static final Logger log = LoggerFactory.getLogger(BaseFilter.class); @Override public void init(FilterConfig filterConfig) throws ServletException { Map
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. */@Configurationpublic 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; }}
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"); }}
输出该日志是因为过滤器拦截到了 /dev 路径下的请求才输出的。可自行测试哦~~~
①:Filter 是基于Tomcat 容器的,无法访问Spring 容器中的Bean。
②:以这种方式向Spring容器中注入Filter 拦截器后,是可以访问到容器中的Bean的。如数据源、某个Service 等。
转载地址:http://nnfwk.baihongyu.com/