以SpringBoot 2.x版本为例,要去除内嵌的Tomcat,可以按照以下步骤进行操作:
1.排除tomcat依赖
在pom.xml文件中,通过在spring-boot-starter-web依赖中排除Tomcat,可以去除内嵌的Tomcat。
示例:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
去除Tomcat依赖后,需要增加Jetty依赖来替代Tomcat。
示例:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>
在SpringBoot的启动类上增加@EnableAutoConfiguration注解,并且指定SpringBoot使用Jetty作为Web服务器。
示例:
@SpringBootApplication
@EnableAutoConfiguration(exclude = {TomcatAutoConfiguration.class})
public class SampleApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SampleApplication.class);
}
public static void main(String[] args) {
new SpringApplicationBuilder(SampleApplication.class)
.web(WebApplicationType.NONE)
.run(args);
}
}
为了保证SpringBoot能够正常启动,需要增加ServletContextInitializerBeans,用来处理SpringBoot Web应用程序。
示例:
@Bean
public ServletContextInitializer servletContextInitializer() {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
}
};
}
完成以上步骤后,就可以去除内嵌的Tomcat,使用Jetty替代Tomcat来启动SpringBoot应用程序了。
本文链接:http://task.lmcjl.com/news/7966.html