Spring Boot 整合 Tomcat
spring boot 为了简化开发,在打包的时候默认打包成jar文件,可以直接执行,tomcat是集成在jar文件中的。如果想打包成war文件,部署到服务器上的tomcat上的话,需要额外配置。需要注意的是,Spring WebFlux 并不完全依赖Servlet API,因此,Spring WebFlux 不支持打包成war。具体打包成war步骤具体如下:
- 需要提供
SpringBootServletInitializer子类,并且需要覆写它的configure方法。配置后可以获得Spring Framework’s Servlet 3.0的支持,同时可以配置启动项。通常情况下都是在主类上继承SpringBootServletInitializer并且覆写configure方法。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 添加或修改
pom.xml文件中的packaging节点的配置为war。
<!-- 放在project下 -->
<packaging>war</packaging>
- 确保在打包的时候不会打包默认的嵌入式的服务器,为了达到此效果,需要在
pom.xml中标记一下嵌入式服务器的依赖为provided。
<dependencies>
<!-- … -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- … -->
</dependencies>
- 再次用
maven进行打包。
mvn clean package
需要注意的是,如果你使用的是Spring Boot build tools,那么执行过上述操作后,除了生成了war文件,可以放在单独的Tomcat容器中外,还可以使用java -jar命令进行运行。原因在于嵌入式容器已经打包在lib-provided目录中了。
参考Spring Boot Reference Documentation 9.17.1章节
本文介绍了如何将Spring Boot应用打包成WAR文件,以便在独立的Tomcat服务器上部署。Spring Boot默认集成Tomcat并打包为可执行JAR,但通过自定义配置,可以禁用内置服务器并支持WAR部署。你需要创建一个配置类,覆盖默认行为,并在pom.xml中调整依赖。完成这些步骤后,你可以使用Maven再次打包,并在外部Tomcat容器中运行应用。

5876

被折叠的 条评论
为什么被折叠?



