首先,我们需要明确的是,Spring Boot可以作为独立的运行环境,也可以作为传统的Web应用程序打成WAR包在Servlet容器中运行。如果你希望将Spring Boot项目打包成WAR,在Tomcat容器中运行,可以参照下面的步骤:
1. 修改pom.xml
在项目的pom.xml文件中,将打包方式修改为war,如下所示:
<packaging>war</packaging>
2. 指定启动类
在Spring Boot的main方法执行的类上,增加注解@SpringBootApplication
,并且继承SpringBootServletInitializer
类,实现configure
方法,如下所示:
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
3. 排除内嵌的Tomcat依赖
在pom.xml文件中,排除Spring Boot内嵌的Tomcat依赖,避免与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>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
4. 打包
在终端命令行中,执行如下命令进行打包:mvn clean package
,打包完成后,在target目录中找到我们的war包,即可部署到Tomcat容器中。
示例1
这个示例是在Spring Boot中使用JPA进行数据库操作的应用程序,代码可以在这里找到。
示例2
这个示例是使用Spring Boot开发的一个基本的Restful API应用程序,代码可以在这里找到。
以上示例,均同时提供了maven和gradle构建方式。
在使用Spring Boot开发Web应用程序时,我们通常选择作为独立的运行环境,但是,在某些场景中,我们也需要以WAR的方式部署到Servlet容器中,Spring Boot提供了很好的支持。只需要在配置文件中修改相应的属性,即可完成WAR包的部署。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot项目如何采用war在tomcat容器中运行 - Python技术站