Springboot可以使用如下方式进行Filter、Listener、Servlet的配置和注入.
1. Spring方式
// 通过
@Bean
public FilterRegistrationBean<MyFilter> filterFilterRegistrationBean() {
FilterRegistrationBean<MyFilter> registerFilter = new FilterRegistrationBean<>();
registerFilter.setFilter(new MyFilter());
registerFilter.setUrlPatterns(Arrays.asList("/"));
return registerFilter;
}
// ServletRegistrationBean<T>;
// ServletListenerRegistrationBean<T>;
// FilterRegistrationBean
// 这里直接以filter为例.
// MyFilter.java
/*
* 定义filter
* */
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
System.out.println("myfilter .....before...");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("myfilter ... after ");
}
}
2. Springboot 方式
// 通过 @WebFilter 、 @WebListner 、 @WebServlet 方式来标注
//@Component
@WebFilter(urlPatterns = "/")
public class MyFilter2 implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("myfilter2 ....");
filterChain.doFilter(servletRequest,servletResponse);
}
}
// 通过在配置类中 @ServletComponentScan 即可。
// 如果直接在实现类中标注了@Component注解,那么只要可以扫描到即可。就不再需要@ServletComponentScan标注