基於註解的SpringMVC添加其他的Servlet、Filter以及Listener
阿新 • • 發佈:2019-01-12
etc patch ping dispatch 重寫 ppi gist ota tex
我們可以在AbstractAnnotationConfigDispatcherServletInitializer的實現類中重寫onStartup(ServletContext servletContext)方法添加其他的Servlet、Filter以及Listener
1 public class SpringWebAppInit extends AbstractAnnotationConfigDispatcherServletInitializer { 2 //Spring容器 3 @Override 4 protected Class<?>[] getRootConfigClasses() {5 return new Class[]{RootConfig.class}; 6 } 7 8 //SpringMVC容器 9 @Override 10 protected Class<?>[] getServletConfigClasses() { 11 return new Class[]{WebConfig.class}; 12 } 13 14 //DispatcherServlet映射關系 15 @Override 16 protected String[] getServletMappings() {17 return new String[]{"/"}; 18 } 19 20 @Override 21 public void onStartup(ServletContext servletContext) throws ServletException { 22 super.onStartup(servletContext); 23 ServletRegistration.Dynamic userServlet = servletContext.addServlet("UserServlet", UserServlet.class); 24 userServlet.addMapping("/user"); 25 } 26 }
也可以寫一個WebApplicationInitializer接口的實現類,通過重寫onStartup(ServletContext servletContext)方法添加其他的Servlet、Filter以及Listener
1 /** 2 * 實現WebApplicationInitializer接口註冊Servlet,也可以用來註冊DispatcherServlet 3 */ 4 public class MyServletInit implements WebApplicationInitializer { 5 @Override 6 public void onStartup(ServletContext servletContext) throws ServletException { 7 ServletRegistration.Dynamic userServlet = servletContext.addServlet("UserServlet", UserServlet.class); 8 userServlet.addMapping("/user"); 9 userServlet.setLoadOnStartup(0); 10 } 11 }
如果你只是註冊Filter,並且該Filter只會映射到DispatcherServlet上的話,那麽只需要重寫AbstractAnnotationConfigDispatcherServletInitializer的getServletFilters()方法。在這個方法中沒有必要聲明它的映射路徑,因為getServletFilters()方法返回的所有Filter都會映射到DispatcherServlet上
1 @Override 2 protected Filter[] getServletFilters() { 3 return new Filter[]{new MyFilter()}; 4 }
基於註解的SpringMVC添加其他的Servlet、Filter以及Listener