在开发阶段我们推荐使用内嵌的tomcat进行开发,因为这样会方便很多,但是到生产环境,我们希望在独立的tomcat容器中运行,因为我们需要对tomcat做额外的优化,这时我们需要将工程打包成war包发进行发布。
操作步骤
1. 工程的打包方式为war
2. 将spring-boot-starter-tomcat的范围设置为provided
<!--spring boot tomcat(默认可以不用配置,
但当需要把当前web应用布置到外部servlet容器时就需要配置,并将scope配置为provided)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
3.修改代码,设置启动配置
需要集成SpringBootServletInitializer,然后重写configure,将Spring Boot的入口类设置进去。
package com.wx.boot;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
@SpringBootApplication
public class SmmvcApp extends SpringBootServletInitializer{
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 设置启动类,用于独立tomcat运行的入口
return builder.sources(SmmvcApp.class);
}
/* main 方法依然不能少 */
public static void main(String[] args) {
SpringApplication.run(SmmvcApp.class, args);
}
}
4. 打成war包
下面两种方式均可
或者利用maven命令
然后直接丢到tomcat的webapps目录下即可
在这种运行模式下,原来的一些设置会失效,如画横线处
访问方式为:http://ip:port/[打成的war包的名称]/xxx.jsp