springboot 部署到外部的tomcat

转载 http://blog.csdn.net/qq_28988969/article/details/78135768

尽管Spring Boot项目会内置一个tomcat,仅只需通过一个简单的指令便可启动项目,但在生产环境下,我们还是习惯将项目发布到第三外的servlet容器中,下面将介绍如果将一个Spring Boot项目部署到第三方tomcat中运行。

1)修改工程的打包方式为war

这里写图片描述

2)将spring-boot-starter-tomcat的范围设置为provided

spring-boot-starter-tomcat是Spring Boot默认就会配置的,即上面说到的内嵌tomcat,将其设置为provided是在打包时会将该包(依赖)排除,因为要放到独立的tomcat中运行,Spring Boot内嵌的Tomcat是不需要用到的。

<!--spring boot tomcat(默认可以不用配置,但当需要把当前web应用布置到外部servlet容器时就需要配置,并将scope配置为provided)-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 这个范围不要加,加上这个外部的tomcat没问题,但是发开的时候,不能跑起来 --> <!--<scope>provided</scope>--> </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3)修改代码,设置启动配置

需要继承SpringBootServletInitializer,并重写configure()方法,将Spring Boot的入口类设置进去。

// 若要部署到外部servlet容器,需要继承SpringBootServletInitializer并重写configure()
@SpringBootApplication
public class AhutApplication extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 设置启动类,用于独立tomcat运行的入口
        return builder.sources(MyWebApplication.class);
    }

}
或者

新增ServletInitializer类

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.context.web.SpringBootServletInitializer;  

public class ServletInitializer extends SpringBootServletInitializer {  

    @Override  
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {  
        return application.sources(Application.class);  
    }  

}  

4)打war包并部署到tomcat

选中项目,右键 > export

这里写图片描述

 

 

idea 发布项目:

 

 

 

 

 

posted on 2018-02-11 15:14  凤鸣岐山  阅读(190)  评论(0编辑  收藏  举报

导航