Spring Boot新手必看Visual Studio Code中如何高效创建和运行第一个REST API作为一名刚接触Spring Boot的开发者你是否曾为如何快速搭建一个REST API而感到困惑Visual Studio Code作为一款轻量级但功能强大的代码编辑器配合Spring Boot可以让你事半功倍。本文将带你从零开始在VS Code中高效创建并运行你的第一个Spring Boot REST API项目。1. 环境准备与项目初始化在开始之前确保你已经安装了以下工具JDK 8或更高版本Visual Studio Code最新版Maven 3.6.3或更高版本打开VS Code后首先需要安装几个必要的扩展Java Extension Pack提供Java语言支持Spring Boot Extension PackSpring Boot开发工具集Maven for JavaMaven项目管理支持安装完成后我们可以通过两种方式创建Spring Boot项目1.1 使用VS Code内置命令创建按下CtrlShiftP打开命令面板输入Spring Initializr选择Create a Maven Project。接下来会提示你选择Spring Boot版本推荐选择最新的稳定版项目语言Java项目组ID和项目ID打包方式JarJava版本与你安装的JDK版本匹配关键步骤是选择依赖项。对于REST API开发至少需要勾选Spring Web包含Spring MVC和嵌入式TomcatLombok简化实体类代码Spring Boot DevTools开发时热加载支持1.2 使用Spring Initializr网站创建如果你更喜欢可视化界面可以访问start.spring.io在线配置项目后下载zip包然后在VS Code中打开。两种方式创建的项目结构基本一致├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── demo │ │ │ └── DemoApplication.java │ │ └── resources │ │ ├── application.properties │ │ └── static │ └── test │ └── java │ └── com │ └── example │ └── demo └── pom.xml2. 项目配置与基础设置创建好项目后我们需要进行一些基础配置。首先打开application.properties文件或新建application.yml添加一些常用配置server: port: 8080 servlet: context-path: /api spring: application: name: my-first-api这里我们设置了服务端口为8080API的基础路径为/api应用名称为my-first-api如果你计划连接数据库可以添加数据库配置以MySQL为例spring: datasource: url: jdbc:mysql://localhost:3306/your_db?useSSLfalseserverTimezoneUTC username: your_username password: your_password driver-class-name: com.mysql.cj.jdbc.Driver提示开发环境下可以在src/main/resources下创建application-dev.yml用于开发环境配置然后在application.yml中通过spring.profiles.activedev来激活。3. 创建第一个REST端点现在我们来创建一个简单的REST端点。按照MVC模式我们需要创建Controller、Service和Entity。3.1 创建实体类首先创建一个简单的Product实体类package com.example.demo.entity; import lombok.Data; Data public class Product { private Long id; private String name; private Double price; private String description; }这里使用了Lombok的Data注解它会自动生成getter、setter、toString等方法。3.2 创建Controller接下来创建ProductControllerpackage com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(/products) public class ProductController { GetMapping public String getAllProducts() { return Hello, this is your first API endpoint!; } }启动应用后访问http://localhost:8080/api/products你应该能看到返回的字符串。3.3 添加Service层为了更好的架构我们添加Service层package com.example.demo.service; import com.example.demo.entity.Product; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; Service public class ProductService { public ListProduct getAllProducts() { return Arrays.asList( new Product(1L, Laptop, 999.99, High performance laptop), new Product(2L, Phone, 699.99, Latest smartphone), new Product(3L, Tablet, 399.99, Portable tablet) ); } }然后修改Controller使用ServiceRestController RequestMapping(/products) public class ProductController { private final ProductService productService; public ProductController(ProductService productService) { this.productService productService; } GetMapping public ListProduct getAllProducts() { return productService.getAllProducts(); } }现在访问端点你将看到返回的JSON格式的产品列表。4. 高级功能与最佳实践4.1 使用DTO进行数据转换在实际项目中我们通常不会直接返回实体类而是使用DTOData Transfer Objectpackage com.example.demo.dto; import lombok.Data; Data public class ProductDTO { private String name; private Double price; }然后在Service中转换public ListProductDTO getAllProducts() { return products.stream() .map(p - { ProductDTO dto new ProductDTO(); dto.setName(p.getName()); dto.setPrice(p.getPrice()); return dto; }) .collect(Collectors.toList()); }4.2 异常处理添加全局异常处理RestControllerAdvice public class GlobalExceptionHandler { ExceptionHandler(Exception.class) public ResponseEntityString handleException(Exception e) { return ResponseEntity .status(HttpStatus.INTERNAL_SERVER_ERROR) .body(Error occurred: e.getMessage()); } }4.3 使用Swagger文档化API添加Swagger依赖到pom.xmldependency groupIdio.springfox/groupId artifactIdspringfox-boot-starter/artifactId version3.0.0/version /dependency然后添加配置类Configuration public class SwaggerConfig { Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } }启动后访问http://localhost:8080/api/swagger-ui/可以看到API文档。4.4 单元测试为Controller添加测试SpringBootTest AutoConfigureMockMvc class ProductControllerTest { Autowired private MockMvc mockMvc; Test void shouldReturnAllProducts() throws Exception { mockMvc.perform(get(/api/products)) .andExpect(status().isOk()) .andExpect(jsonPath($, hasSize(3))); } }5. 调试与优化5.1 使用VS Code调试VS Code提供了强大的调试功能。点击左侧调试图标创建launch.json配置{ version: 0.2.0, configurations: [ { type: java, name: Debug (Launch)-DemoApplication, request: launch, mainClass: com.example.demo.DemoApplication, projectName: demo } ] }设置断点后按F5开始调试。5.2 性能监控添加Spring Boot Actuator依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency然后在application.yml中启用端点management: endpoints: web: exposure: include: *访问http://localhost:8080/api/actuator可以查看各种监控信息。5.3 日志配置在application.yml中添加日志配置logging: level: root: INFO org.springframework.web: DEBUG file: name: logs/app.log6. 部署与持续集成6.1 打包应用使用Maven打包mvn clean package这会在target目录下生成可执行的jar文件。6.2 Docker化创建DockerfileFROM openjdk:11-jre-slim COPY target/demo-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT [java,-jar,/app.jar]然后构建并运行docker build -t my-spring-app . docker run -p 8080:8080 my-spring-app6.3 CI/CD集成可以在项目中添加GitHub Actions配置name: Java CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv2 - name: Set up JDK 11 uses: actions/setup-javav2 with: java-version: 11 distribution: adopt - name: Build with Maven run: mvn -B package --file pom.xml - name: Run Tests run: mvn test7. 常见问题解决7.1 端口冲突如果遇到端口被占用错误可以修改application.yml中的server.port查找并终止占用端口的进程7.2 依赖冲突使用以下命令查看依赖树mvn dependency:tree7.3 跨域问题添加CORS配置Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(GET, POST, PUT, DELETE); } }或者直接在Controller上使用CrossOrigin注解。7.4 热部署不工作确保已添加Spring Boot DevTools依赖在VS Code设置中开启了自动保存启用了Build AutomaticallyJava Build Enable Auto Build8. 扩展学习路径掌握了基础REST API开发后你可以继续学习Spring Security集成JPA/Hibernate数据访问Redis缓存RabbitMQ消息队列Spring Cloud微服务VS Code配合Spring Boot为Java开发者提供了高效便捷的开发体验。从项目创建到调试部署整个流程都可以在这个轻量级编辑器中完成。随着项目复杂度增加记得保持良好的代码结构和适当的模块划分。
Spring Boot新手必看:Visual Studio Code中如何高效创建和运行第一个REST API
发布时间:2026/5/28 20:35:44
Spring Boot新手必看Visual Studio Code中如何高效创建和运行第一个REST API作为一名刚接触Spring Boot的开发者你是否曾为如何快速搭建一个REST API而感到困惑Visual Studio Code作为一款轻量级但功能强大的代码编辑器配合Spring Boot可以让你事半功倍。本文将带你从零开始在VS Code中高效创建并运行你的第一个Spring Boot REST API项目。1. 环境准备与项目初始化在开始之前确保你已经安装了以下工具JDK 8或更高版本Visual Studio Code最新版Maven 3.6.3或更高版本打开VS Code后首先需要安装几个必要的扩展Java Extension Pack提供Java语言支持Spring Boot Extension PackSpring Boot开发工具集Maven for JavaMaven项目管理支持安装完成后我们可以通过两种方式创建Spring Boot项目1.1 使用VS Code内置命令创建按下CtrlShiftP打开命令面板输入Spring Initializr选择Create a Maven Project。接下来会提示你选择Spring Boot版本推荐选择最新的稳定版项目语言Java项目组ID和项目ID打包方式JarJava版本与你安装的JDK版本匹配关键步骤是选择依赖项。对于REST API开发至少需要勾选Spring Web包含Spring MVC和嵌入式TomcatLombok简化实体类代码Spring Boot DevTools开发时热加载支持1.2 使用Spring Initializr网站创建如果你更喜欢可视化界面可以访问start.spring.io在线配置项目后下载zip包然后在VS Code中打开。两种方式创建的项目结构基本一致├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── demo │ │ │ └── DemoApplication.java │ │ └── resources │ │ ├── application.properties │ │ └── static │ └── test │ └── java │ └── com │ └── example │ └── demo └── pom.xml2. 项目配置与基础设置创建好项目后我们需要进行一些基础配置。首先打开application.properties文件或新建application.yml添加一些常用配置server: port: 8080 servlet: context-path: /api spring: application: name: my-first-api这里我们设置了服务端口为8080API的基础路径为/api应用名称为my-first-api如果你计划连接数据库可以添加数据库配置以MySQL为例spring: datasource: url: jdbc:mysql://localhost:3306/your_db?useSSLfalseserverTimezoneUTC username: your_username password: your_password driver-class-name: com.mysql.cj.jdbc.Driver提示开发环境下可以在src/main/resources下创建application-dev.yml用于开发环境配置然后在application.yml中通过spring.profiles.activedev来激活。3. 创建第一个REST端点现在我们来创建一个简单的REST端点。按照MVC模式我们需要创建Controller、Service和Entity。3.1 创建实体类首先创建一个简单的Product实体类package com.example.demo.entity; import lombok.Data; Data public class Product { private Long id; private String name; private Double price; private String description; }这里使用了Lombok的Data注解它会自动生成getter、setter、toString等方法。3.2 创建Controller接下来创建ProductControllerpackage com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(/products) public class ProductController { GetMapping public String getAllProducts() { return Hello, this is your first API endpoint!; } }启动应用后访问http://localhost:8080/api/products你应该能看到返回的字符串。3.3 添加Service层为了更好的架构我们添加Service层package com.example.demo.service; import com.example.demo.entity.Product; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; Service public class ProductService { public ListProduct getAllProducts() { return Arrays.asList( new Product(1L, Laptop, 999.99, High performance laptop), new Product(2L, Phone, 699.99, Latest smartphone), new Product(3L, Tablet, 399.99, Portable tablet) ); } }然后修改Controller使用ServiceRestController RequestMapping(/products) public class ProductController { private final ProductService productService; public ProductController(ProductService productService) { this.productService productService; } GetMapping public ListProduct getAllProducts() { return productService.getAllProducts(); } }现在访问端点你将看到返回的JSON格式的产品列表。4. 高级功能与最佳实践4.1 使用DTO进行数据转换在实际项目中我们通常不会直接返回实体类而是使用DTOData Transfer Objectpackage com.example.demo.dto; import lombok.Data; Data public class ProductDTO { private String name; private Double price; }然后在Service中转换public ListProductDTO getAllProducts() { return products.stream() .map(p - { ProductDTO dto new ProductDTO(); dto.setName(p.getName()); dto.setPrice(p.getPrice()); return dto; }) .collect(Collectors.toList()); }4.2 异常处理添加全局异常处理RestControllerAdvice public class GlobalExceptionHandler { ExceptionHandler(Exception.class) public ResponseEntityString handleException(Exception e) { return ResponseEntity .status(HttpStatus.INTERNAL_SERVER_ERROR) .body(Error occurred: e.getMessage()); } }4.3 使用Swagger文档化API添加Swagger依赖到pom.xmldependency groupIdio.springfox/groupId artifactIdspringfox-boot-starter/artifactId version3.0.0/version /dependency然后添加配置类Configuration public class SwaggerConfig { Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } }启动后访问http://localhost:8080/api/swagger-ui/可以看到API文档。4.4 单元测试为Controller添加测试SpringBootTest AutoConfigureMockMvc class ProductControllerTest { Autowired private MockMvc mockMvc; Test void shouldReturnAllProducts() throws Exception { mockMvc.perform(get(/api/products)) .andExpect(status().isOk()) .andExpect(jsonPath($, hasSize(3))); } }5. 调试与优化5.1 使用VS Code调试VS Code提供了强大的调试功能。点击左侧调试图标创建launch.json配置{ version: 0.2.0, configurations: [ { type: java, name: Debug (Launch)-DemoApplication, request: launch, mainClass: com.example.demo.DemoApplication, projectName: demo } ] }设置断点后按F5开始调试。5.2 性能监控添加Spring Boot Actuator依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency然后在application.yml中启用端点management: endpoints: web: exposure: include: *访问http://localhost:8080/api/actuator可以查看各种监控信息。5.3 日志配置在application.yml中添加日志配置logging: level: root: INFO org.springframework.web: DEBUG file: name: logs/app.log6. 部署与持续集成6.1 打包应用使用Maven打包mvn clean package这会在target目录下生成可执行的jar文件。6.2 Docker化创建DockerfileFROM openjdk:11-jre-slim COPY target/demo-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT [java,-jar,/app.jar]然后构建并运行docker build -t my-spring-app . docker run -p 8080:8080 my-spring-app6.3 CI/CD集成可以在项目中添加GitHub Actions配置name: Java CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv2 - name: Set up JDK 11 uses: actions/setup-javav2 with: java-version: 11 distribution: adopt - name: Build with Maven run: mvn -B package --file pom.xml - name: Run Tests run: mvn test7. 常见问题解决7.1 端口冲突如果遇到端口被占用错误可以修改application.yml中的server.port查找并终止占用端口的进程7.2 依赖冲突使用以下命令查看依赖树mvn dependency:tree7.3 跨域问题添加CORS配置Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(GET, POST, PUT, DELETE); } }或者直接在Controller上使用CrossOrigin注解。7.4 热部署不工作确保已添加Spring Boot DevTools依赖在VS Code设置中开启了自动保存启用了Build AutomaticallyJava Build Enable Auto Build8. 扩展学习路径掌握了基础REST API开发后你可以继续学习Spring Security集成JPA/Hibernate数据访问Redis缓存RabbitMQ消息队列Spring Cloud微服务VS Code配合Spring Boot为Java开发者提供了高效便捷的开发体验。从项目创建到调试部署整个流程都可以在这个轻量级编辑器中完成。随着项目复杂度增加记得保持良好的代码结构和适当的模块划分。