关键词

SpringBoot去除内嵌tomcat的实现

以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>
  1. 增加Jetty依赖

去除Tomcat依赖后,需要增加Jetty依赖来替代Tomcat。

示例:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
</dependencies>
  1. 修改启动类

在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);
    }
}
  1. 增加ServletContextInitializerBeans

为了保证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

展开阅读全文