SpringBoot 项目如何在tomcat容器中运行

本文介绍SpringBoot应用的两种部署方式:一是使用内嵌Tomcat直接部署为jar包;二是使用外部Tomcat部署为war包。文章详细解释了如何配置及打包,并说明了不同部署方式下URL请求路径的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. SpringBoot内嵌容器的部署方式

SpringBoot内部默认提供内嵌的tomcat容器,所以可以直接打成jar包,丢到服务器上的任何一个目录,然后在当前目录下执行java -jar demo.jar即可运行,但是这种方式的运行退出进程就结束了。如果想在后台可以运行,则需要执行 java -jar demo.jar > log_demo.file 2>&1 & 即可在后台运行该服务了,log_demo.file是日志文件。如需停止该进程 执行ps -ef|grep java 找到对应的进程 kill 进程ID 即可

二. 使用外部的tomcat部署方式

  1. pom.xml文件,dependencies中添加
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
</dependency>
  1. 在pom.xml文件中,project下面packaging标签改为
<packaging>war</packaging>
  1. 将项目的启动类Application.java继承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) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

这样,只需要以上3步就可以打包成war包,并且部署到tomcat中了。需要注意的是这样部署的request url需要在端口后加上项目的名字才能正常访问。spring-boot更加强大的一点就是:即便项目是以上配置,依然可以用内嵌的tomcat来调试,启动命令和以前没变,还是:mvn spring-boot:run。

如果需要在springboot中加上request前缀,需要在application.properties中添加server.contextPath=/prefix/即可。其中prefix为前缀名。这个前缀会在war包中失效,取而代之的是war包名称,如果war包名称和prefix相同的话,那么调试环境和正式部署环境就是一个request地址了。
如果是application.yml 文件 则为

server:
  port: 8080
  context-path: /prefix
<think>嗯,用户想知道如何将Spring Boot项目部署到Tomcat运行。首先,我需要回想一下相关的知识。记得Spring Boot默认是内嵌Tomcat,直接打包成JAR运行的。但如果要部署到外部的Tomcat,需要做一些调整。 首先,用户需要将项目打包成WAR而不是JAR。这涉及到修改pom.xml文件,把打包方式从jar改成war。然后,可能需要排除内嵌的Tomcat依赖,避免冲突。这时候应该引用相关的引用内容,比如引用[3]提到要修改Maven的打包方式。 接下来,可能需要让主类继承SpringBootServletInitializer,并重写configure方法。引用[2]中的DemoApplication扩展了这个类,所以需要指导用户修改他们的主类。这部分需要注意代码的正确性,确保用户不会出错。 然后,配置Tomcat的相关部分。比如,在application.properties中设置上下文路径和端口,不过如果部署到外部Tomcat,端口可能由Tomcat控制,这部分可能需要说明。另外,打包后的WAR文件需要放到Tomcat的webapps目录下,或者通过Tomcat Manager部署,引用[4]中有提到这些方法。 可能还需要考虑多实例部署的情况,比如使用不同的端口或者Docker容器。不过用户可能暂时只需要基础配置,所以这部分可以作为扩展提到。 最后,用户可能会有疑问,比如依赖冲突或者访问路径问题,应该在注意事项里提醒他们检查依赖和日志。同时,生成相关问题可以帮助用户深入了解更多优化或配置细节,比如性能调优或者多环境配置。 总之,步骤应该是:修改打包方式,排除内嵌Tomcat,调整主类,配置Tomcat,打包部署,最后验证。确保每一步都清晰,并引用正确的参考资料,这样用户能一步步跟着操作,避免常见错误。</think>### 如何将Spring Boot项目部署到Tomcat运行? #### 步骤 1:修改项目打包方式 1. 在`pom.xml`中修改打包格式为`war`: ```xml <packaging>war</packaging> ``` 2. 排除Spring Boot内嵌的Tomcat依赖(避免冲突)[^3][^4]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 声明为外部提供 --> </dependency> ``` #### 步骤 2:修改主启动类 继承`SpringBootServletInitializer`并重写`configure`方法,以支持外部Tomcat启动[^2][^4]: ```java @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` #### 步骤 3:配置Tomcat部署参数 在`application.properties`中添加以下配置(可选): ```properties server.servlet.context-path=/myapp # 设置应用上下文路径 server.port=8080 # 仅在内嵌Tomcat运行时生效,外部Tomcat忽略此配置 ``` #### 步骤 4:打包与部署 1. 通过Maven打包生成WAR文件: ```bash mvn clean package ``` 2. 部署到Tomcat- **方式1**:将生成的`myapp.war`直接复制到Tomcat的`webapps`目录,Tomcat会自动解压并部署。 - **方式2**:通过Tomcat Manager上传并部署(需配置管理员权限)。 #### 验证部署 1. 启动Tomcat: ```bash ${TOMCAT_HOME}/bin/startup.sh # Linux ${TOMCAT_HOME}/bin/startup.bat # Windows ``` 2. 访问应用: ``` http://localhost:8080/myapp ``` #### 注意事项 - **依赖冲突**:确保项目中无与Tomcat版本冲突的依赖(如Servlet API)。 - **日志查看**:部署失败时可检查`${TOMCAT_HOME}/logs/catalina.out`。 - **上下文路径**:若WAR文件名与访问路径不一致,需在Tomcat的`server.xml`中配置`Context`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值