文章摘要: 摘要内容。
重要
条件和版本说明
- ^ Java 17
- Spring Framework 6
- MySQL 8.0
相关信息
外部相关文章
- 参考第三方博客文章:博客园-yuey6670,讲述了项目依赖、配置文件、目录结构。
内部相关文章
- SpringBoot 3 项目单元测试:Library-Maven-SpringBoot3-热门推荐-项目单元测试
- SpringBoot 3 约定:Library-Maven-SpringBoot3-约定
注释
当进行微服务开发时的专业术语歧义:
- 拆分模块(开发中) == 拆分多服务(部署中)
简介
简要说明
- Spring Boot 3项目是基于 Spring Framework 6 的全新版本,旨在简化Spring应用的初始搭建以及开发过程。它提供了一系列的自动化配置,使得开发者能够快速启动并运行一个独立的、生产级别的基于Spring的应用。
- spring boot 是以启动器为单位,整合各种需求的依赖。
- 官方文档:网站链接,国内网速不稳定。
主要功能
- 自动配置:根据项目中添加的依赖自动配置Spring应用。
- 独立运行:内嵌Tomcat、Jetty或Undertow,无需部署到外部服务器。
- 简化依赖管理:通过提供一系列的"Starters",简化了依赖的添加和管理。
- 生产就绪特性:提供了一系列生产就绪特性,如指标、健康检查和外部化配置。
- 无代码生成和XML配置:不需要代码生成,也不需要XML配置文件。
注意事项
- 兼容性:Spring Boot 3 基于 Spring Framework 6,可能不兼容早期版本的Spring应用。
- JDK版本:需要JDK 17或更高版本。
- 依赖升级:在迁移旧项目到 Spring Boot 3 时,需要注意第三方依赖的兼容性。
- 配置变更:部分配置属性可能在新版本中发生变化,需要根据官方文档进行相应的调整。
适用场景
- 微服务架构:适用于构建微服务架构中的独立服务。
- 快速原型开发:适合快速启动新项目,进行原型设计和开发。
- 全栈开发:提供全栈开发支持,包括前端、后端、数据库等。
- 企业级应用:适用于构建大型企业级应用,提供丰富的功能和生产就绪特性。
- 云原生应用:支持云原生应用的开发,与容器化技术(如Docker)和编排工具(如Kubernetes)无缝集成。
Maven坐标
<!-- 继承父级项目 -->
<parent> <!-- 引入并继承spring boot提供的父级pom.xml -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.1</version>
</parent>
项目搭建
- 使用Maven来搭建SpringBoot项目的流程:Library-Maven-SpringBoot3-问题总结-手动搭建基于Maven的项目
运行流程
详细总结:Library-Maven-SpringBoot3-问题总结-代码运行流程
场景启动器
命名规范
- 官方提供的场景:命名为:
spring-boot-starter-* - 第三方提供场景:命名为:
*-spring-boot-starter
详细总结:Library-Maven-SpringBoot3-场景启动器(starter)
配置文件
- SpringBoot使用一个全局的配置文件,核心配置文件,配置文件名在约定的情况下,名字是固定的,
- 配置文件的作用:修改SpringBoot自动配置的默认值,实现自定义。
SpringBoot配置文件支持的属性汇总:Library-Maven-SpringBoot3-配置文件-YAML文件
SpringBoot项目配置文件推荐方案:Library-Maven-SpringBoot3-热门推荐-配置方案
配置文件格式
application.properties配置文件
- Properties格式文件的语法规则:Language-Properties
application.yml配置文件
- YAML格式文件的语法规则:Language-YAML
加载顺序
根据文件格式
yml<yaml<properties配置文件。
根据文件位置
| 配置文件位置 | 说明 | 优先级 |
|---|---|---|
classpath:/ | 资源根路径 | 最低 |
classpath:/config/*/ | 资源根路径下的config目录 | |
classpath:/config/ | 资源根路径下的config目录 | |
file:./ | 项目根路径 | |
file:./config/*/ | ||
file:./config/ | 项目根路径下的config目录 | |
java -jar <项目名>.jar --spring.config.location=<配置文件位置> | 命令行指定文件 | 最大 |
Profile文件的加载
Profile的意思是配置,对于应用程序来说,不同的环境需要不同的配置。
SpringBoot框架提供了多profile的管理功能,可以和私用profile功能来区分不同环境的配置。
spring官方给出的语法规则是:
application-{profile}.properties(.yml)默认配置环境(
application.properties)开发配置环境(
application-dev.properties)生产配置环境(
application-prod.properties)
案例
- 实现两种环境下进行切换,需要在默认配置环境(
application.properties)中加入如下内容即可。
spring.profiles.active = prod
读取配置文件属性绑定到Java类属性上
详细总结:Library-Maven-SpringBoot3-注解
自动配置
自动配置类的原理
DevTools热部署
- Spring Boot DevTools 是一个为开发者提供便捷的工具集。
主要功能
自动重启
- 当你的代码发生变化并保存时,Spring Boot 应用程序会自动重启。
- 这使得开发者能够快速看到代码更改后的效果,无需手动停止和启动应用程序。
实时重载
- 对于静态资源和视图模板(如 Thymeleaf)的更改,应用程序会实时重载这些资源,无需重启。
- 这意味着你可以立即看到对 HTML、CSS 或 JavaScript 文件的更改。
实现步骤
详细总结:Library-Maven-SpringBoot3-问题总结-DevTools依赖实现热部署
日志
- SpringBott3 默认使用的是Logback日志框架实现
- 日志的应用程序属性:Library-Maven-SpringBoot3-配置文件-YAML文件
注释
日志级别和日志配置文件,请查看具体的日志依赖,本文章不再详细展开。
切换其他日志框架
注释
SLF4J只能运行1个桥接器,因此需要取消掉一个桥接器。
通过将依赖中手动把排除掉。
<!-- 引入依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除依赖 -->
<exclusions>
<!-- 排除具体依赖 -->
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
添加log4j2的场景启动器
<!-- 引入依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
添加log4j的日志配置文件
Web开发
调用rest http接口
- 通过RestTemplate调用:这是Spring提供的用于访问Rest服务的。提供的一种模板类来进行操作。
- 适用场景:在微服务架构下,服务之间通过网络远程调用。
WebClient
- 无阻塞。依赖无响应式的应用。
通过MockMvc测试
springboot整合swagger
spring MVC
Servlet容器
spring boot 与AOP
整合第三方功能
详细总结:Library-Maven-SpringBoot3-问题总结-整合第三方功能
整合Mybatis
整合Druid