本文展示了如何使用 VS Code 和 Docker 从零开始实现 Spring Boot 的 HelloWorld 项目。
准备工作
软件环境
请确保电脑上已安装 Docker Desktop、VS Code 已安装 Docker 和 Dev Container 插件。
构建 Docker 镜像和容器
在项目根目录下创建以下 Dockerfile 文件用于构建支持 Spring Boot 开发的 Docker 镜像:
FROM maven:3.8.5-openjdk-17
VOLUME /hellospringboot
WORKDIR /hellospringboot
CMD tail -f /dev/null
之后根目录下打开终端依次输入以下命令构建镜像和容器:
docker build -t maven:3.8.5-openjdk-17 .
docker run -d -v "$(pwd):/hellospringboot" --name hellospringboot maven:3.8.5-openjdk-17
此时,我们已准备好一个带有 jdk 和 Maven 的容器化开发环境,接下来就可以开始开发项目了。
构建 Spring Boot 项目
官网生成项目
可以到 https://start.spring.io/ 生成一个 Spring Boot 项目,各选项可参考如下设置:
Project - Maven
Language - Java
Spring Boot - 3.2.0
Project Metadata
Group - com.example
Artifact - hellospringboot
Name - hellospringboot
Description - Demo project for Spring Boot
Package name - com.example.hellospringboot
Packaging - jar
Java - 17
创建时可在 Dependencies 处添加 Spring Web 依赖,也可之后在 pom.xml 里手动添加以下代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
使用 VS Code 进行容器化开发
请注意,并不能在之前写 Dockerfile 的 VS Code 界面进行开发,因为那只是主机中的文件夹,没有相关依赖。请按以下步骤打开容器中开发环境:
- 在左侧 Docker 标签页可查看已有的容器和镜像;
- 检查希望运行的容器左侧图标,正方形表示已停止,三角形表示正在运行;若已停止,右键点击 Start,之后再右键选择“附加 Visual Studio Code”即可远程连接容器内的文件系统;
- 在“文件”菜单选择“打开文件夹”,选择打开 hellospringboot 目录,即可进入工程开发;
编写核心服务
在 hellospringboot/src/main/java/com/example/hellospringboot
下创建 controller 文件夹,再在其中创建 HelloSpringBoot.java,其内容如下:
package com.example.hellospringboot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloSpringBoot {
@RequestMapping("/")
public String hello() {
return "Hello, Spring Boot!";
}
}
Spring Boot 热部署
在 pom.xml
中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
这样,在进行代码更改时就无需重启应用程序。
运行项目
进入 hellospringboot/src/main/java/com/example/hellospringboot/HellospringbootApplication.java
,点击 run 按钮,等待片刻即可从浏览器 http://localhost:8080/ 地址处访问该服务。若发现 8080 端口被占用,可在 hellospringboot/src/main/resources/application.properties
中修改端口,例如:
server.port=8999
最终的项目文件结构如下:
hellospringboot
│
│ .gitignore
│ Dockerfile
│ HELP.md
│ mvnw
│ mvnw.cmd
│ pom.xml
│
├─.mvn
│ └─wrapper
│ maven-wrapper.jar
│ maven-wrapper.properties
│
├─.vscode
│ settings.json
│
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─example
│ │ │ └─hellospringboot
│ │ │ │ HellospringbootApplication.java
│ │ │ │
│ │ │ └─controller
│ │ │ HelloSpringBoot.java
│ │ │
│ │ └─resources
│ │ application.properties
│ │
│ └─test
│ └─java
│ └─com
│ └─example
│ └─hellospringboot
│ HellospringbootApplicationTests.java
│
└─target
├─classes
│ │ application.properties
│ │
│ └─com
│ └─example
│ └─hellospringboot
│ │ HellospringbootApplication.class
│ │
│ └─controller
│ HelloSpringBoot.class
│
└─test-classes
└─com
└─example
└─hellospringboot
HellospringbootApplicationTests.class
发表回复
要发表评论,您必须先登录。