springboot 使用第三方tomcat 运行

    xiaoxiao2025-12-02  19

    将这个 spring Boot 项目的打包方式设置为 war。

    <packaging>war</packaging>

    去除內嵌tomcat

    SpringBoot 默认有内嵌的 tomcat 模块,因此,我们要把这一部分排除掉。(注意不放在第三方tomcat不要去掉),可以先自测没问题,再去除,当然不去除在第三方tomcat下也可以运行

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 如果在使用自带tomcat请注释下面,如果使用第三方tomcat不要注释下面 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>

    完整maven配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springboot</groupId> <artifactId>springboot-test</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-test</name> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 如果在使用自带tomcat请注释下面,如果使用第三方tomcat不要注释下面 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> </dependencies> <build> <plugins> <!-- 如果要打成jar包并使用 java -jar **.jar运行,请不要注释spring-boot-maven-plugin --> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName>springboot</warName> </configuration> </plugin> </plugins> </build> </project>

    项目结构

    springboot-test ├── pom.xml ├── src │   ├── main │   │   ├── index.jsp │   │   ├── java │   │   │   └── com │   │   │   └── lhy │   │   │   ├── controller │   │   │   │   └── SampleController.java │   │   │   └── init │   │   │   └── Application.java │   │   └── resources │   │   └── application.properties │   └── test │   ├── java │   └── resources ├── target │   ├── classes │   ├── m2e-jee │   └── test-classes └── work └── Tomcat └── localhost └── aaa

    注意,程序不要放在默认的default package 目录下,不然有可能会报错

    main程序,Application.java

    启动tomcat会自动找

    提供一个 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。我们可以把应用的主类改为继承 SpringBootServletInitializer。或者另外写一个类。

    package com.lhy.init; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @SpringBootApplication @Configuration @ComponentScan(basePackages="com.lhy") //默认扫描是当前包下的路径 @EnableAutoConfiguration 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); } }

    controller 类SampleController.java

    package com.lhy.controller; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; @Controller public class SampleController { @RequestMapping("/") @ResponseBody String home() { return "Hello world"; } }

    打包运行

    注意:部署到 tomcat 以后,访问这个项目的时候,须要带上这个项目的 war 包名。

    另外,我们还可以使用 war 插件来定义打包以后的 war 包名称,以免 maven 为我们默认地起了一个带版本号的 war 包名称。例如:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName>springboot</warName> </configuration> </plugin>

    把打包好的springboot.war 放在tomcat中,启动。

    输入 localhost:8080/springboot

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)