- 用法介绍
在SpringBootApplication上使用@ServletComponentScan注解后,
Servlet(控制器)、Filter(过滤器)、Listener(监听器)可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册到Spring容器中,无需其他代码。 - 例
定义过滤器,使用@WebFilter注入
@WebFilter(urlPatterns = "/*",filterName = "channelFilter")
public class ChannelFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
ServletRequest requestWrapper = null;
if(servletRequest instanceof HttpServletRequest) {
requestWrapper = new RequestWrapper((HttpServletRequest) servletRequest);
}
if(requestWrapper == null) {
System.out.println("servletRequest");
filterChain.doFilter(servletRequest, servletResponse);
} else {
System.out.println("requestWrapper");
filterChain.doFilter(requestWrapper, servletResponse);
}
}
@Override
public void destroy() {
}
}
- 在启动类上使用@ServletComponentScan来进行扫描
@Slf4j
@SpringBootApplication
@ServletComponentScan
public class LearnInYueQingApplication {
public static void main(String[] args) {
System.out.println("开始启动");
log.error("logger class : {}",log.getClass().toString());
SpringApplication.run(LearnInYueQingApplication.class,args);
System.out.println("启动成功");
}
}