Spring Boot 注册Servlet、Filter、Listener

来自ling
跳转至: 导航搜索

http://blog.csdn.net/cl_andywin/article/details/54605831

在Servlet 3.0之前我们都是使用web.xml进行配置,需要增加Servlet、Filter或者Listener都是在web.xml增加相应的配置即可。这里我们使用的是使用Java配置来注册Servlet、Filter、Listener。

注册Servlet

  • 使用ServletRegistrationBean注册

使用ServletRegistrationBean注册只需要在@Configuration类中加入即可,例如以下代码:

    @Bean  
    public ServletRegistrationBean myServlet() {  
        ServletRegistrationBean myServlet = new ServletRegistrationBean();  
        myServlet.addUrlMappings("/servlet");  
        myServlet.setServlet(new MyServlet());  
        return myServlet;  
    }
  • 使用@WebServlet

使用@WebServlet注册,需要在Servlet类上使用该注解即可,但是需要在@Configuration类中使用Spring Boot提供的注解@ServletComponentScan扫描注册相应的Servlet。

注册Filter

  • 使用FilterRegistrationBean注册

使用FilterRegistrationBean注册Filter,只需要在@Configuration类中加入即可,例如以下代码:

    @Bean  
    public FilterRegistrationBean myFilter() {  
        FilterRegistrationBean myFilter = new FilterRegistrationBean();  
        myFilter.addUrlPatterns("/*");  
        myFilter.setFilter(new MyFilter());  
        return myFilter;  
    }
  • 使用@WebFilter

使用@WebFilter注册,需要在Filter类上使用该注解即可,但是需要在@Configuration类中使用Spring Boot提供的注解@ServletComponentScan扫描注册相应的Filter。

  • 直接使用@Component
@Component("contextFilter")
public class ContextFilter implements Filter {
......
}

注册Listener

  • 使用ServletListenerRegistrationBean注册

使用ServletListenerRegistrationBean注册Listener只需要在@Configuration类中加入即可,例如以下代码:

    @Bean  
    public ServletListenerRegistrationBean<MyListener> myServletListener() {  
        ServletListenerRegistrationBean<MyListener> myListener = new ServletListenerRegistrationBean<MyListener>();  
        myListener.setListener(new MyListener());  
        return myListener;  
    }
  • 使用@WebListener

使用@WebListener注册,需要在Filter类上使用该注解即可,但是需要在@Configuration类中使用Spring Boot提供的注解@ServletComponentScan扫描注册相应的Listener。