一、前期准备

本地环境:已安装 JDK、Maven、Docker Desktop

二、新建 Spring Boot 项目

(一)打开新建项目界面

打开 IDEA,点击「File」→「New」→「Project...」。

此时左侧菜单栏会显示多个选项,你会看到 Spring Boot,直接选中它

(二)项目基础信息配置

配置项 示例值 说明
Name DemoSpringBootWar 项目显示名
Location E:\JProjects 项目存储目录
Language Java 项目编程语言
Type Maven 构建工具
Group com.wisear 组织标识(自定义)
Artifact DemoSpringBootWar 项目名称
Package name com.wisear.demo 基础包路径
JDK 21 JDK版本
Java Version 21 与 JDK 版本一致
Packaging War ✅ 关键:选择 WAR(而非默认 Jar)
Configuration Properties 配置文件类型

完成后点击「Next」。

(三)选择 Spring Boot 版本和依赖

顶部选择 Spring Boot 版本(默认即可)。

下方「Dependencies」(依赖)区域,在弹出的搜索框中输入「依赖名称」,勾选该依赖(这里暂时可以不用其他依赖)。

点击「Create」确认,回到主界面等待项目加载完成。

(四)预览项目关键文件

1.创建完成的项目结构

2. 主启动类代码如下

package com.wisear.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoSpringBootWarApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoSpringBootWarApplication.class, args);
    }

}

3.ServletInitializer代码如下

package com.wisear.demo;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoSpringBootWarApplication.class);
    }

}

ServletInitializer.java是专门适配外部 Servlet 容器(Tomcat)的启动类,它继承了SpringBootServletInitializer并实现了configure方法

4.pom.xml内容如下

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.0.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wisear</groupId>
    <artifactId>DemoSpringBootWar</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>DemoSpringBootWar</name>
    <description>DemoSpringBootWar</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>21</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

三、启动并验证项目

(一)启动项目

在 IDEA 的「Project」面板中,找到主启动类:

  • 鼠标右键点击该文件的编辑区域(或文件名);
  • 在弹出的菜单中选择:
    • 「Run 'DemoSpringBootWarApplication'」

出现以下日志表示启动成功:


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v4.0.3)

2026-03-19T14:40:12.511+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] c.w.demo.DemoSpringBootWarApplication    : Starting DemoSpringBootWarApplication using Java 21.0.5 with PID 6676 (E:\JProjects\DemoSpringBootWar\target\classes started by Chenzy in E:\JProjects\DemoSpringBootWar)
2026-03-19T14:40:12.513+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] c.w.demo.DemoSpringBootWarApplication    : No active profile set, falling back to 1 default profile: "default"
2026-03-19T14:40:13.043+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] o.s.boot.tomcat.TomcatWebServer          : Tomcat initialized with port 8080 (http)
2026-03-19T14:40:13.053+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2026-03-19T14:40:13.053+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/11.0.18]
2026-03-19T14:40:13.090+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] b.w.c.s.WebApplicationContextInitializer : Root WebApplicationContext: initialization completed in 535 ms
2026-03-19T14:40:13.306+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] o.s.boot.tomcat.TomcatWebServer          : Tomcat started on port 8080 (http) with context path '/'
2026-03-19T14:40:13.310+08:00  INFO 6676 --- [DemoSpringBootWar] [           main] c.w.demo.DemoSpringBootWarApplication    : Started DemoSpringBootWarApplication in 1.099 seconds (process running for 1.372)

验证完成后,关闭应用,进行后续操作。

(二)添加 Hello World 控制器

package com.wisear.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 处理Hello World GET请求的控制器
 */
@RestController // 等价于@Controller + @ResponseBody,直接返回字符串而非视图
@RequestMapping("/") // 根路径
public class HelloController {
    /**
     * 处理GET请求:/hello
     *
     * @return 字符串 "Hello World"
     */
    @GetMapping("/hello") // 匹配GET方式的/hello请求
    public String helloWorld() {
        // 返回Hello World字符串
        return "Hello World";
    }
}

(三)再次启动项目

启动成功后,打开浏览器,访问

http://localhost:8080/hello

页面返回Hello World,说明本地运行正常。如下图:

验证完成之后,关闭应用,进行后续操作。

四、打包并部署WAR包

(一)打包 WAR 包

在项目根目录执行 Maven 命令,生成 WAR 包(默认输出到target/目录):

# 清理并打包(跳过测试)

mvn clean package -DskipTests

打包成功后,target/目录下会生成DemoSpringBootWar.war(对应 pom.xml 中finalName配置,如果没有定义finalName,将以artifactId+‘-’+version组合成的名称打包)。

(二)编写 Dockerfile

在项目根目录新建Dockerfile文件(无后缀),内容如下:

# 1. 基础镜像:官方Tomcat
FROM tomcat
# 2. 将本地WAR包复制到Tomcat的webapps目录(/usr/local/tomcat/webapps)
COPY target/DemoSpringBootWar.war /usr/local/tomcat/webapps/demo.war
# 3. 暴露Tomcat端口(默认8080)
EXPOSE 8080

说明:COPY target/DemoSpringBootWar.war /usr/local/tomcat/webapps/demo.war,访问路径为http://ip:8080/demo。

(三)构建 Docker 镜像

在项目根目录执行以下命令(demo-tomcat为镜像名称,:v1为版本标签):

docker build -t demo-tomcat:v1 .

参数说明:

-t:指定镜像名称和标签

.:指定 Dockerfile 所在目录(当前目录)

构建成功后,打开Decker Desktop,在Images列表中可以看到生成的镜像(也可以命令行执行docker images查看)

同时在Builds的列表中可以看到记录(每一次执行docker build命令,都会在 Builds 中生成一条记录)。

(四)运行 Docker 容器

# 运行容器(端口映射:主机8080端口 -> 容器8080端口)

docker run -d -p 8080:8080 --name my-demo-tomcat demo-tomcat:v1

参数说明:

-d:后台运行容器

-p 8080:8080:端口映射(主机端口:容器端口)

--name my-demo-tomcat:指定容器名称(自定义)

demo-tomcat:v1:要运行的镜像名称 + 标签

运行成功后,打开Decker Desktop,在Containers列表中可以看到生成的容器(也可以命令行执行docker ps查看。)

(五)验证部署结果

查看容器运行状态(# 若能看到my-demo-tomcat,说明启动成功):

docker ps 

访问项目接口(刚刚创建的HelloWorld中的hello接口):

http://localhost:8080/demo/hello

若能正常看到Hello World输出,说明部署成功。

到此从项目创建、项目配置、项目打包到项目部署的整体流程完成。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐