我在web.xml中有一个简单的servlet配置:
<servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.atmosphere.cpr.MeteorServlet</servlet-class> <init-param> <param-name>org.atmosphere.servlet</param-name> <param-value>org.springframework.web.servlet.DispatcherServlet</param-value> </init-param> <init-param> <param-name>contextClass</param-name> <param-value> org.springframework.web.context.support.AnnotationConfigWebApplicationContext </param-value> </init-param> <init-param> <param-name>contextConfigLocation</param-name> <param-value>net.org.selector.animals.config.ComponentConfiguration</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
如何为SpringBootServletInitializer重写它?
如果我以表面价值来考虑您的问题(您想要一个SpringBootServletInitializer与您现有应用程序重复的应用程序),我想它看起来像这样:
SpringBootServletInitializer
@Configuration public class Restbucks extends SpringBootServletInitializer { protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Restbucks.class, ComponentConfiguration.class); } @Bean public MeteorServlet dispatcherServlet() { return new MeteorServlet(); } @Bean public ServletRegistrationBean dispatcherServletRegistration() { ServletRegistrationBean registration = new ServletRegistrationBean(dispatcherServlet()); Map<String,String> params = new HashMap<String,String>(); params.put("org.atmosphere.servlet","org.springframework.web.servlet.DispatcherServlet"); params.put("contextClass","org.springframework.web.context.support.AnnotationConfigWebApplicationContext"); params.put("contextConfigLocation","net.org.selector.animals.config.ComponentConfiguration"); registration.setInitParameters(params); return registration; } }
有关更多详细信息,请参见有关转换现有应用程序的文档。
但是,与使用Atmosphere相比,现在使用Tomcat和Spring中的本机Websocket支持可能会更好(请参阅websocket示例和指南以获取示例)。