部署spring boot项目到外部tomcat服务器需调整打包方式和配置。1. 修改pom.xml中的打包方式为war,并将内嵌tomcat依赖设为provided;2. 创建继承springbootservletinitializer的类以确保应用正确启动;3. 生成war包后部署到tomcat的webapps目录;4. 注意tomcat版本兼容性、jsp依赖及日志检查,应用路径通常与war包名一致。按照步骤操作可顺利完成部署。
部署spring boot项目到Tomcat服务器其实并不难,但有些细节容易被忽略。Spring Boot默认使用内嵌的Tomcat,所以如果你要部署到外部的Tomcat服务器,需要做一些调整。下面是一些关键步骤和注意事项。
修改打包方式为war
Spring Boot默认是打成可执行jar包运行的,而部署到外部Tomcat需要用war包格式。你需要在pom.xml中做两件事:
-
把
标签改成war: <packaging>war</packaging>
-
确保Spring Boot的内嵌Tomcat依赖设置为provided,这样它不会被打进最终的war包里:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
这一步做完之后,再执行mvn clean package,就会生成一个标准的war文件了。
编写ServletInitializer类
为了让你的Spring Boot应用能在外部Tomcat中启动,需要添加一个继承自SpringBootServletInitializer的类。这个类会告诉Tomcat如何加载Spring Boot应用。
示例代码如下:
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ApplicationInitializer extends SpringBootServletInitializer { @Override protected void configure(SpringApplicationBuilder builder) { builder.sources(Application.class); // 这里的Application是你主类 } }
这个类不需要加任何注解,只要存在就行。有了它,Tomcat在启动时就能正确初始化Spring上下文。
部署到Tomcat并检查配置
生成war包之后,就可以把它放到Tomcat的webapps目录下,然后启动Tomcat。Tomcat会自动解压war文件,并部署你的应用。
几点需要注意的地方:
- Tomcat版本最好和Spring Boot兼容,一般推荐用Tomcat 9或以上。
- 如果你用了JSP页面,可能需要额外添加一些依赖,比如tomcat-embed-jasper。
- 检查日志文件(如catalina.out),看有没有启动错误。
- 应用访问路径通常是war包的名字,比如你生成的是myapp.war,那访问地址就是 http://localhost:8080/myapp。
基本上就这些。整个过程不算复杂,但有几个关键点不能漏掉,尤其是打包方式和ServletInitializer的编写。只要按照上面的步骤一步步来,大多数情况下都能顺利部署成功。