Spring Boot自定义Filter

自定义Filter

import org.apache.catalina.filters.RemoteIpFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ConfigurationFilter {

    @Bean
    public RemoteIpFilter remoteIpFilter() {
        return new RemoteIpFilter();
    }
    
    @Bean  //方法实例化并返回一个对象
    public FilterRegistrationBean<MyFilter> testFilterRegistration() {
        FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<MyFilter>();
        registration.setFilter(new MyFilter());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("name", "jack");
        registration.setName("MyFilter");
        registration.setOrder(1);
        return registration;
    }
    
    public class MyFilter implements Filter {

        @Override
        public void destroy() {
        }

        @Override
        public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
                throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest)arg0;
            System.out.println("This is my filter, uri:" + request.getRequestURI());
            arg2.doFilter(arg0, arg1);
        }

        @Override
        public void init(FilterConfig arg0) throws ServletException {
        }
    }
}

如何获取FilterRegistrationBean

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
    
    @Autowired  //自动装配
    FilterRegistrationBean<?> registration;
    
    @GetMapping("/getName")
    public Map<String, String> getName() {
        Map<String, String> initPara = registration.getInitParameters();
        return initPara;
    }
}

 

posted @ 2018-04-17 20:43  AaronCnblogs  阅读(145)  评论(0)    收藏  举报