Spring Boot 开发速查清单:从 YAML 配置、Starter 依赖到 Web 与 JPA 数据访问实战
文档知识库教程开发工具【免费下载链接】reference为开发人员分享快速参考备忘清单(速查表)项目地址https://gitcode.com/jaywcjlove/reference点击查看免费下载本篇技术指南以开源仓库 jaywcjlove/reference 中的 Spring Boot 备忘清单 为骨架系统梳理 Spring Boot 应用从项目创建、核心配置、依赖管理到 Web 开发、JPA 数据访问、单元测试与打包部署的完整实战路径。阅读完成后你将掌握一套可直接照抄照用的 Spring Boot 开发速查体系覆盖application.yml全部常用配置项、Starter 依赖与 BOM 版本管理机制以及一个可运行的 CRUD 应用与 MockMvc 测试范例。该文档属于该仓库「编程」分类下的 Java 技术栈速查表与仓库中的 Java 备忘清单、YAML 配置速查、MySQL 速查、JSON 速查 相互配套。开发 Spring Boot 需要具备基本的 Java 基础和 Maven 基础可先翻阅 Java 备忘清单 复习语言要点。入门Spring Boot 是什么与项目创建介绍Spring Boot 是一个用于简化 Spring 应用程序开发的框架。它提供了一种简单的方式来创建、运行和部署 Spring 应用程序并简化了配置和依赖管理。其核心设计理念可以概括为两点约定优于配置绝大多数场景下开箱即用开发者无需手工编写繁琐的 XML 配置文件自动配置根据类路径中的依赖项自动装配应用上下文让「依赖即功能」成为可能。项目创建与配置推荐使用 Spring Initializr 生成项目骨架两种渠道可选官方渠道访问 start.spring.io选择构建工具Maven/Gradle、语言Java、Spring Boot 版本以及所需依赖国内加速渠道访问 start.aliyun.com阿里云镜像同样可以选择依赖项如 Web、JPA、Security和 Spring Boot 版本下载速度更快。拿到骨架后还需要完成两个关键动作将所需依赖项添加到pom.xmlMaven或build.gradleGradle文件中依赖的具体写法见下文「依赖管理」一节在src/main/resources目录下创建application.properties或application.yml文件用于配置数据库连接信息、端口号等应用程序属性。配置YAML 配置文件全解配置文件说明在 Spring Boot 应用程序中通常使用 YAML 格式.yml文件来配置应用程序的属性和设置。相比传统的.properties文件YAML 格式更加清晰易读并且支持层级结构和列表等复杂数据类型。关于 YAML 的完整语法缩进、注释、锚点、多行字符串等可参考仓库中的 YAML 速查清单。以下是一些常用的 Spring Boot YAML 配置字段速查表配置项作用常见取值/默认值server.port应用程序监听的 HTTP 端口号默认8080spring.application.name应用程序名称任意字符串spring.datasource.url数据库连接的 URL如jdbc:mysql://localhost:3306/mydatabasespring.datasource.username数据库连接的用户名如rootspring.datasource.password数据库连接的密码如passwordlogging.level日志记录级别DEBUG、INFO、WARN、ERRORmanagement.endpoints.web.exposure.include可通过 Web 访问的管理端点health、info或*暴露全部spring.jpa.hibernate.ddl-autoHibernate 的 DDL 模式update、create、create-drop、validate1. 应用程序配置spring: application: name: my-applicationspring.application.name是应用程序的名称。在集成服务发现如 Eureka、Nacos和配置管理如 Spring Cloud Config时特别有用同时也会影响 Actuator 端点的路径——例如启用 Actuator 后/actuator端点前缀中会带上应用名信息。2. 服务器端口配置server: port: 8080server.port指定应用程序监听的 HTTP 端口号默认为 8080可根据需要修改。例如在本地同时运行多个服务时常改为9090、18080等避免冲突。3. 数据源配置spring: datasource: url: jdbc:mysql://localhost:3306/mydatabase username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver # 这里是 MySQL8.0 版本配置5.0 则是 com.mysql.jdbc.Driver说明spring.datasource.url数据库连接 URL注意其中包含的库名要与实际数据库一致spring.datasource.username和spring.datasource.password数据库的用户名和密码spring.datasource.driver-class-name数据库驱动类名。MySQL 8.0 使用com.mysql.cj.jdbc.DriverMySQL 5.x 使用com.mysql.jdbc.Driver混用会导致驱动加载失败。更完整的 MySQL 连接参数与 SQL 用法可参考仓库中的 MySQL 备忘清单。4. JPA 配置spring: jpa: show-sql: true hibernate: ddl-auto: update说明spring.jpa.show-sql是否在控制台显示 SQL 语句开发阶段建议开启便于调试spring.jpa.hibernate.ddl-autoHibernate 自动建表策略可选update、create、create-drop、validate。其中update会对比实体类自动更新表结构validate只校验不修改create-drop常在测试环境中使用会话结束即删除表。5. 日志配置logging: level: org.springframework: INFO com.example: DEBUG说明logging.level日志级别配置可以针对不同的包或类设置不同的日志级别如TRACE、DEBUG、INFO、WARN、ERROR。上面的示例将 Spring 框架自身的日志设为INFO而将业务包com.example设为更详细的DEBUG从而在避免刷屏的同时保留业务调试信息。6. Spring Security 配置spring: security: user: name: user password: password basic: enabled: true说明spring.security.user.name和spring.security.user.password基本认证的用户名和密码spring.security.basic.enabled是否启用基本认证Basic Auth。引入spring-boot-starter-security后默认即会对所有端点启用认证此配置可快速指定默认账号。7. Actuator 配置management: endpoints: web: exposure: include: health, info说明management.endpoints.web.exposure.include暴露给外部的 Actuator 端点列表可设置为*来暴露所有端点生产环境需谨慎。常见端点包括health健康检查、info应用信息、metrics指标、env环境属性等。8. 多环境配置spring: profiles: active: dev说明spring.profiles.active指定当前激活的环境配置文件。Spring Boot 支持application-{profile}.yml的命名约定例如application-dev.yml、application-prod.yml激活某个 profile 后会自动加载对应文件实现开发、测试、生产环境的配置隔离。9. 自定义属性配置myapp: custom: property: value说明自定义应用程序属性可以在应用程序中通过Value注解或Environment对象访问。例如Value(${myapp.custom.property})即可注入该值更推荐的做法是配合ConfigurationProperties将一组自定义属性绑定到 POJO实现类型安全的配置管理。依赖管理依赖管理介绍在 Spring Boot 中依赖管理是非常重要的一部分。它通过简化依赖项的引入和版本管理大大简化了项目的构建和维护过程。Spring Boot 采用了Starter 依赖项的概念通过提供预配置的依赖项集合来简化项目的初始化和配置。Starter 依赖项Spring Boot 的 Starter 依赖项是预先配置的一组依赖项集合它们以spring-boot-starter-*的命名格式提供。这些 Starter 依赖项可以按照功能领域进行分类常用的包括Starter功能领域spring-boot-starter-web构建 Web 应用程序包括 Spring MVC 和内嵌的 Servlet 容器如 Tomcatspring-boot-starter-data-jpa使用 Spring Data JPA 访问数据库包括 Hibernate 和 JPA 实现spring-boot-starter-securitySpring Security用于身份验证和授权spring-boot-starter-test单元测试和集成测试包括 JUnit、Mockito 等spring-boot-starter-actuatorActuator用于监控和管理应用程序引入 Starter 依赖项可以快速添加特定功能Spring Boot 会自动配置所需的组件和设置减少手动配置工作量。自动依赖解析和版本管理Spring Boot 的 BOMBill of Materials物料清单集中管理各个 Starter 依赖项的版本。通过在pom.xmlMaven或build.gradleGradle中引入 BOM可以简化依赖项版本管理。例如在 Maven 项目中dependencyManagement dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-dependencies/artifactId version2.6.0/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement这样一来当你在项目中引入 Spring Boot 的 Starter 依赖项时不需要显式声明版本号Maven 会自动使用 BOM 中指定的版本。文档示例使用2.6.0版本实际使用时请以你通过 Spring Initializr 选择的稳定版本为准。自定义依赖管理尽管 Spring Boot 提供了丰富的 Starter 依赖项和依赖管理功能但有时你可能需要自定义特定的依赖项或版本。在这种情况下你可以在pom.xml或build.gradle中显式声明所需的依赖项而不使用 Starter 依赖项。例如在 Maven 项目中你可以这样声明一个依赖项dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId version2.6.0/version /dependency这样做可以覆盖 Spring Boot BOM 中指定的版本允许你使用特定版本的依赖项——显式声明版本的优先级高于 BOM 管理。排除和冲突解决在实际项目中可能会遇到依赖项之间的冲突或不兼容性问题。Spring Boot 允许你通过exclusions标签来排除 Starter 依赖项中的某些传递性依赖以解决冲突问题。例如在 Maven 项目中排除传递性依赖将内嵌的 Tomcat 容器换为 Jetty 或 Undertow 时非常常见dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId exclusions exclusion groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-tomcat/artifactId /exclusion /exclusions /dependency这种排除机制使得你可以更精确地控制项目中依赖项的版本和组合以避免不必要的冲突。Spring Boot 核心功能依赖注入Dependency Injection依赖注入是 Spring 框架的核心概念之一它通过控制反转IoCInversion of Control的方式管理对象之间的依赖关系从而实现松耦合、可测试和可维护的代码结构。Spring Boot 通过自动配置的方式支持依赖注入以下是一些关键点自动装配Auto-configurationSpring Boot 根据类路径中的依赖项自动配置应用程序上下文。这包括自动扫描和注册带有特定注解如Component、Service、Repository等的 Bean以及自动解析和注入这些 Bean 之间的依赖关系。这也是 Starter 依赖「开箱即用」的底层原因——类路径上存在某个依赖对应的自动配置类即生效。Bean 的声明和管理开发者可以使用Autowired注解在需要依赖注入的地方注入其他 BeanSpring Boot 会自动解析和注入所需的依赖。例如RestController public class MyContr { private final MyService myService; Autowired public MyContr(MyService myService) { this.myService myService; } // Controller methods }在上面的例子中MyContr中的MyService依赖通过构造函数注入完成。现代 Spring 实践中更推荐构造器注入而非字段注入因为依赖关系更明确、更利于单元测试。条件化注入Spring Boot 支持根据条件选择性地注入 Bean。例如可以使用Conditional注解或ConditionalOnProperty注解根据特定的条件决定是否创建和注入 Bean。ConditionalOnProperty可以配合配置文件中的属性开关使用例如仅当myapp.feature.enabledtrue时才注册某个 Bean。面向切面编程Aspect-Oriented Programming面向切面编程是一种软件开发方法用于分离横切关注点cross-cutting concerns例如日志、事务管理、安全性等以便更好地模块化和管理应用程序。Spring Boot 通过整合 Spring AOP 框架支持面向切面编程。切面Aspect切面是一个模块化的类它包含了横切关注点的逻辑。在 Spring Boot 中可以使用Aspect注解标记一个类作为切面并通过Before、After、Around等注解定义切面的具体行为。切点Pointcut切点定义了在应用程序中哪些位置应用切面逻辑。切点表达式使用execution关键字指定要拦截的方法调用。例如Aspect Component public class LoggingAspect { Before(execution(* com.example.service.*.*(..))) public void beforeServiceMethods(JoinPoint joinPoint) { // Advice logic before service method execution } // Other advices (e.g., After, Around) can be defined similarly }通知Advice通知是在切点处执行的具体逻辑包括Before、AfterReturning、AfterThrowing、Around等。例如在上面的例子中beforeServiceMethods方法就是一个Before通知它在目标方法执行之前执行。配置和启用Spring Boot 通过自动配置和注解扫描使得使用 AOP 变得非常简单。通常情况下只需在切面类上加上Aspect注解并确保它被 Spring Boot 的组件扫描机制扫描到即可——即类位于主启动类所在包或子包下并被Component标注。Web 开发从零搭建 Hello World1. 创建一个新的 Spring Boot 项目你可以使用 Spring Initializr 创建一个新的 Spring Boot 项目。访问 start.spring.io 并按照以下配置创建项目ProjectMaven 或 Gradle选择你的构建工具LanguageJavaSpring Boot选择最新的稳定版本Project MetadataGroupcom.example或者你喜欢的 Group IDArtifacthelloworld或者你喜欢的 Artifact IDDependencies选择 Spring Web点击 Generate 下载项目的 zip 文件。2. 将项目导入到你的 IDE 中解压下载的文件并导入到你喜欢的 IDE 中如 IntelliJ IDEA、Eclipse 等。3. 实现 Hello World Controller在 IDE 中打开你的项目导航到src/main/java/com/example/helloworld。你会看到一个名为HelloworldApplication.java的类文件这是 Spring Boot 应用程序的入口类。在这个类的同级目录下创建一个新的 Java 类文件例如HelloController.java并添加以下内容package com.example.helloworld; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class HelloController { GetMapping(/) public String hello() { return Hello, World!; } }RestController将类标记为 REST 控制器GetMapping(/)将根路径的 GET 请求映射到hello()方法。4. 运行应用程序使用 Maven 或 Gradle 构建项目并启动应用程序。可以通过 IDE 的运行功能或者命令行执行以下命令mvn spring-boot:run或者./gradlew bootRunmvn spring-boot:run由spring-boot-maven-plugin提供无需先打包即可直接启动应用。5. 访问 Hello World 页面在浏览器中访问http://localhost:8080/你应该能够看到显示 Hello, World! 的页面。这样你就成功创建了一个简单的 Spring Boot Web 应用程序并实现了一个基本的 Hello, World! 示例。数据访问Spring Data JPA 完整 CRUD1. 创建过程创建过程和 Web 项目示例一样通过 Spring Initializr 生成项目。注意需要选择 JPA 和对应数据库的驱动如 MySQL Driver、H2 等。2. 配置数据库连接默认情况下Spring Boot 使用 H2 Database 作为内嵌数据库无需额外安装适合快速体验。如果你想使用其他数据库可以在application.properties或application.yml文件中配置数据库连接信息。例如使用 H2 Database 的默认配置# application.properties spring.datasource.urljdbc:h2:mem:testdb spring.datasource.driverClassNameorg.h2.Driver spring.datasource.usernameusername spring.datasource.passwordpassword spring.jpa.database-platformorg.hibernate.dialect.H2Dialect # Hibernate ddl auto (create, create-drop, validate, update) spring.jpa.hibernate.ddl-autoupdatejdbc:h2:mem:testdb表示使用内存数据库应用重启后数据即清空适合开发与测试阶段。3. 创建实体类User在src/main/java/com/example/userdemo目录下创建一个名为User的实体类package com.example.userdemo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; Entity public class User { Id GeneratedValue(strategy GenerationType.IDENTITY) private Long userId; private String username; private Integer age; private String sex; // Constructors, getters, and setters 省略 }Entity标注该类为 JPA 实体并映射到数据库表Id指定主键GeneratedValue(strategy GenerationType.IDENTITY)使用数据库自增主键。注意需要补充对应的 getter/setter 方法供后续 CRUD 使用。4. 创建 UserRepository 接口在同样的目录下创建一个接口UserRepository继承自JpaRepositoryUser, Long这样 Spring Data JPA 将会自动实现一些基本的数据库操作方法。package com.example.userdemo; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepositoryUser, Long { }接口中无需编写任何方法实现——JpaRepository已内置findAll()、findById()、save()、deleteById()等常用方法Spring Data JPA 会在运行时自动生成代理实现。5. 创建控制器来测试创建一个简单的控制器UserController用来处理 HTTP 请求并操作UserRepository来访问数据库。package com.example.userdemo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; RestController RequestMapping(/users) public class UserController { Autowired private UserRepository userRepository; // 获取所有用户 GetMapping(/) public ListUser getAllUsers() { return userRepository.findAll(); } // 通过 id 获取用户 GetMapping(/{id}) public User getUserById(PathVariable(id) Long id) { return userRepository.findById(id).orElse(null); } // POST 创建新用户 PostMapping(/) public User addUser(RequestBody User user) { return userRepository.save(user); } // PUT 更新用户 PutMapping(/{id}) public User updateUser(PathVariable(id) Long id, RequestBody User userDetails) { User user userRepository.findById(id).orElse(null); if (user ! null) { user.setUsername(userDetails.getUsername()); user.setAge(userDetails.getAge()); user.setSex(userDetails.getSex()); return userRepository.save(user); } return null; } // DELETE 删除用户 DeleteMapping(/{id}) public void deleteUser(PathVariable(id) Long id) { userRepository.deleteById(id); } }6. 运行应用程序并测试使用 Maven 或 Gradle 构建并运行你的应用程序。然后可以使用 Postman 或浏览器访问以下 API 来测试你的应用程序方法接口说明GEThttp://localhost:8080/users/获取所有用户GEThttp://localhost:8080/users/{id}根据用户 ID 获取用户信息POSThttp://localhost:8080/users/添加新用户Body 中包含 JSON 数据PUThttp://localhost:8080/users/{id}更新用户信息Body 中包含 JSON 数据DELETEhttp://localhost:8080/users/{id}删除用户POST / PUT 请求体使用 JSON 格式例如{username:alice,age:18,sex:female}JSON 语法细节可参考仓库中的 JSON 速查清单。测试使用 MockMvc 编写接口测试1. 创建一个简单的项目在src/main/java/com/example/demo目录下创建一个名为HelloController.java的类package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class HelloController { GetMapping(/hello) public String hello() { return Hello, World!; } }创建过程同 Web 项目创建。2. 编写测试类在src/test/java/com/example/demo目录下创建一个名为HelloControllerTest.java的测试类package com.example.demo; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; SpringBootTest AutoConfigureMockMvc public class HelloControllerTest { Autowired private MockMvc mockMvc; Test public void helloTest() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get(/hello)) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.content().string(Hello, World!)) .andDo(print()); } }3. 解释测试类的关键点SpringBootTest这个注解告诉 Spring Boot 在测试时启动整个 Spring 应用程序上下文AutoConfigureMockMvc这个注解确保在测试中自动配置 MockMvc 实例用于模拟 HTTP 请求Autowired private MockMvc mockMvc注入 MockMvc 实例用于执行 HTTP 请求并验证响应Test public void helloTest()这是一个 JUnit 测试方法用来测试HelloController中的hello()方法mockMvc.perform(...)执行一个 GET 请求到/hello接口andExpect(MockMvcResultMatchers.status().isOk())预期响应的状态码是 200 OKandExpect(MockMvcResultMatchers.content().string(Hello, World!))预期响应的内容是 Hello, World!andDo(print())打印请求和响应的详细信息方便调试。4. 运行测试使用 Maven 执行mvn test或通过 IDE 直接运行测试类确保程序正确。部署与扩展1. 打包方式Spring Boot 应用程序可以打包为以下几种方式之一可执行 JAR 文件最常见的方式是将 Spring Boot 应用程序打包成一个可执行的 JAR 文件Java ArchiveJAR 文件中包含了所有的依赖项可以通过java -jar命令来运行无需外部容器。WAR 文件如果你需要将 Spring Boot 应用程序部署到外部的 Servlet 容器如 Tomcat、Jetty 等你可以将应用程序打包成一个 WAR 文件Web Application ArchiveWAR 文件适合传统的 Java Web 应用程序部署方式需配合外置容器使用。2. 打包工具通常使用以下两种构建工具来打包 Spring Boot 应用程序Maven使用 Maven 的mvn package命令可以将应用程序打包为 JAR 或 WAR 文件在pom.xml文件中Spring Boot 应用程序通常会依赖于spring-boot-starter-parent父项目这简化了 Maven 配置和依赖管理。Gradle使用 Gradle 的gradle build或./gradlew bootJar命令完成类似打包构建产物同样输出到build/libs目录。3. 打包过程概述当你运行 Maven 的构建命令时它们会执行以下几个主要步骤来打包你的应用程序依赖项解析和下载构建工具会检查你项目中的依赖项下载缺失的依赖并构建整个依赖树编译代码构建工具会编译你的 Java 代码、资源文件等运行测试通常会执行单元测试和集成测试确保代码质量和功能正确性打包应用程序对于可执行 JAR 文件构建工具会将编译后的类文件、资源文件和依赖项打包到一个 JAR 文件中。同时它会生成一个MANIFEST.MF文件指定应用程序的入口点main class对于 WAR 文件构建工具会将编译后的类文件、资源文件和依赖项打包成一个 WAR 文件包括WEB-INF目录和其他必要的内容输出结果构建工具会在指定的目录下生成打包好的 JAR 或 WAR 文件通常位于target目录下Maven。在你的 Spring Boot 项目中通常有一个入口类如Application.java或者根据你的项目命名。这个类使用SpringBootApplication注解标记它包含了main方法用来启动应用程序——它同时组合了SpringBootConfiguration、EnableAutoConfiguration和ComponentScan三个注解的功能。4. 示例假设你有一个简单的 Spring Boot 应用程序并且已经配置好了 Maven 或 Gradle。运行以下命令即可进行打包Mavenmvn clean package构建工具会执行以上步骤生成可执行的 JAR 文件或 WAR 文件你可以根据需要进行部署和运行。生成的 JAR 可通过java -jar target/xxx.jar直接启动如需容器化部署可参考仓库中的 Dockerfile 速查清单 编写镜像构建脚本。在仓库中继续深入本文内容整理自仓库中的 Spring Boot 备忘清单位于docs/springboot.md。该仓库jaywcjlove/reference是一份面向开发者的快速参考备忘清单集合全部速查表以 Markdown 编写支持通过npm install npm start本地渲染为 HTML 页面参见仓库根目录 package.json 中的脚本配置。如果你希望为这份清单贡献内容或修正错误可以阅读 CONTRIBUTING.md 与 Quick Reference 排版说明 了解文档规范。与本文配套的速查表还包括 Java、YAML、MySQL、JSON、Markdown 与 Dockerfile 等可按需查阅。赞分享文档知识库教程开发工具【免费下载链接】reference为开发人员分享快速参考备忘清单(速查表)项目地址https://gitcode.com/jaywcjlove/reference点击查看免费下载相关推荐Spring Boot 快速参考备忘清单配置、依赖管理、Web 与数据访问实战指南Spring Boot 快速参考备忘清单配置、依赖管理、Web 与数据访问实战指南 本篇技术指南基于当前仓库 docs/springboot.md https文档教程WxJava 视频号开发 Spring Boot Starter 接入指南wx-java-channel-spring-boot-starter 从配置到实战WxJava 视频号开发 Spring Boot Starter 接入指南wx java channel spring boot starter 从配置到实战后端即时通讯4GB 内存实测note-gen 低配设备性能表现附完整优化清单4GB 内存实测note gen 低配设备性能表现附完整优化清单 在 Celeron 处理器、4GB 内存的旧笔记本上双击 note gen 的图标从窗AI 应用桌面应用移动开发知识管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考