如何使用Spring Boot注册辅助servlet?

我有一个额外的servlet,我需要在我的应用程序中注册。 然而,使用Spring Boot及其Javaconfiguration文件,我不能在web.xml文件中添加servlet映射。

我怎样才能添加额外的servlet?

只需要为servlet添加一个bean 。 它将被映射到/{beanName}/

 @Bean public Servlet foo() { return new FooServlet(); } 

ServletRegistrationBean也是可用的

 @Bean public ServletRegistrationBean servletRegistrationBean(){ return new ServletRegistrationBean(new FooServlet(),"/someOtherUrl/*"); } 

最终成为我所走的道路。

您可以在Application类中使用不同的ServletRegistrationBean(比如@Bean)注册多个不同的servlet,并且可以注册一个servlet具有多个servlet映射;

  @Bean public ServletRegistrationBean axisServletRegistrationBean() { ServletRegistrationBean registration = new ServletRegistrationBean(new AxisServlet(), "/services/*"); registration.addUrlMappings("*.jws"); return registration; } @Bean public ServletRegistrationBean adminServletRegistrationBean() { return new ServletRegistrationBean(new AdminServlet(), "/servlet/AdminServlet"); } 

我们也可以按以下方式注册Servlet:

 @Configuration public class ConfigureWeb implements ServletContextInitializer, EmbeddedServletContainerCustomizer { @Override public void onStartup(ServletContext servletContext) throws ServletException { registerServlet(servletContext); } private void registerServlet(ServletContext servletContext) { log.debug("register Servlet"); ServletRegistration.Dynamic serviceServlet = servletContext.addServlet("ServiceConnect", new ServiceServlet()); serviceServlet.addMapping("/api/ServiceConnect/*"); serviceServlet.setAsyncSupported(true); serviceServlet.setLoadOnStartup(2); } }