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 发布项目: