一、配置文件的核心作用
- 解决硬编码问题
- 硬编码是将数据直接写死在代码中,缺乏灵活性;配置文件 则将易变信息集中存储,程序启动时读取并加载。
- 举例:手机字体大小,硬编码会导致所有用户字体一致,配置文件可让用户自定义显示。
- 支持交互与适配实现用户与程序、程序与程序之间的灵活交互,适配不同场景的个性化需求。
二、SpringBoot 配置文件的典型应用场景
SpringBoot 通过统一配置文件规范框架集成,常见配置内容包括:
- 项目启动端口:解决默认 8080 端口被占用的问题,支持用户自定义端口。
- 数据库连接信息:适配不同数据库,让持久层框架(对 JDBC 的封装)通过配置实现数据库访问。
- 其他配置项:第三方系统密钥、日志设置等。
三、配置⽂件快速⼊⼿
3.1操作背景
SpringBoot 内置 Tomcat 默认端口为 8080,若该端口被占用,可通过配置文件修改端口。
3.2操作步骤
- 找到配置文件 在 SpringBoot 项目的
resources目录下,找到默认生成的application.properties文件。

- 修改端口配置 在文件中添加(或修改)配置项:
server.port=9090。 - 验证结果
- 重新运行程序后,日志会显示
Tomcat started on port(s): 9090,说明端口生效。 - 访问程序需使用新端口(如
http://127.0.0.1:9090/login.html),原 8080 端口不再可用。
- 重新运行程序后,日志会显示

四、配置⽂件的格式
4.1配置文件的三种格式:
- application.properties
- application.yml 是 yaml 的简写(类似 htm 是 html 的简写),目前主流格式
- application.yaml
4.2多格式配置文件的优先级规则
若同时存在 Properties 和 yml 配置文件:
- 非冲突项:两者配置会合并生效
- 冲突 项:以 Properties 的配置为准(Properties 优先级更高)
虽然理论上来讲.properties 可以和.yml 共存,但实际的业务 当中,我们通常会采取**⼀种统⼀** 的配置⽂件格式,这样可以更好的维护(降低故障率).
4.3不同格式的语法规则
-
Properties 语法
- 用
=分隔 key 和 value - key 规范:全小写,单词间用
.分隔 - 示例:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb
- 用
-
yml 语法
- 采用层级缩进结构(缩进的空格不可省略)
- 示例:

五、properties配置⽂件说明
properties配置⽂件是最早期的配置⽂件格式,也是创建SpringBoot项⽬默认的配置⽂件
5.1properties基本语法
properties是以键值的形式配置的,key和value之间是以"="连接的(key=value),如:

PS:配置⽂件中使⽤"#"来添加注释信息。
5.2读取配置⽂件
在项⽬中,想要主动的读取配置⽂件中的内容通过@Value注解读取配置,语法为@Value("${key}"),示例:



5.3properties缺点分析
properties配置是以key-value的形式配置的,如下图所⽰:

配置存在冗余信息 ,例如数据库相关配置需**重复写spring.datasource**前缀,易造成配置冗余、可读性下降。

可以使⽤yml配置⽂件的格式化了
六、yml配置⽂件说明
yml是YAML是缩写,它的全称YetAnotherMarkupLanguage翻译成中⽂就是"另⼀种标记语⾔.
6.1yml基本语法
YAML 是树形结构的配置文件,核心语法是key: value,冒号后必须加空格(否则配置无效):
- 正确示例:
key1: java(key 会高亮,配置生效) - 错误示例:
key2:java2(key 无高亮,配置不生效)

YAML 的实际应用(以数据库连接为例)

yml和properties连接数据库的配置对⽐


6.2yml使⽤进阶
6.2.1yml配置不同数据类型及null

6.2.2yml配置读取
yml读取配置的⽅式和properties相同,使⽤@Value注解即可

6.2.3注意事项:value值加单双引号
字符串默认不⽤加 上单引号或者双引号,如果加英⽂的单双引号 可以表⽰特殊的含义。
尝试在application.yml中配置如下信息:



以上程序的执⾏结果如下图所⽰:

结论:
- 无引号 / 单引号 :特殊字符会被转义(失去原功能)例:
str1: Hello \n Spring Boot.、str2: 'Hello \n Spring Boot.'输出:Hello \n Spring Boot.(\n被当作普通字符串) - 双引号 :特殊字符会保留原含义例:
str3: "Hello \n Spring Boot."输出:(\n解析为换行)
6.3配置对象
支持两种写法(效果一致):

不能⽤@Value来读取配置中的对象了,此时要使⽤注解**@ConfigurationProperties**来读取



6.4配置集合
配置⽂件也可以配置list集合,如下所⽰:

集合的读取和对象⼀样,也是使⽤@ConfigurationProperties 来读取的,具体实现如下:

访问集合的实现如下:

6.5配置Map
配置⽂件也可以配置map,如下所⽰:

或者是使⽤⾏内写法(与上⾯的写法作⽤⼀致):

Map的读取和对象⼀样,也是使⽤@ConfigurationProperties 来读取的,具体实现如下:

打印类的实现如下:

6.6yml优缺点
优点:
- 可读性高:写法简洁,层级结构清晰,易于理解。
- 支持多数据类型:可直接表达对象、数组、List、Map 等复杂结构。
- 跨语言兼容:不仅适用于 Java,还支持 Golang、Python、Ruby 等多种编程语言。
缺点:
- 不适合复杂配置:配置逻辑复杂时,YAML 的层级嵌套会降低可读性,且转换(如从 Properties 转 YAML)成本高。
⽐如properties格式如下:

转换为yml:

- 格式要求严格:缩进、空格等格式错误(如少一个空格)会导致配置失效,排查成本高。
七、验证码案例
7.1验证码的应用背景
随着安全需求提升,验证码已成为项目的常见安全措施,形式从传统字符验证码,扩展到图形验证码、行为验证码等更复杂的类型。
7.2验证码的实现方式
验证码可通过前端或后端实现 ,也可借助第三方插件 / 工具包快速开 发,此处选择Hutool 工具包来实现(Hutool 是 Java 生态中的工具集,提供了简洁的验证码生成 API)。
7.3Hutool 验证码的核心特点
Hutool 的验证码工具支持生成多种类型的验证码(字符、数字、图形干扰等),优点是集成简单、配置灵活,能快速实现验证码的生成、渲染与校验逻辑。
7.4需求与接口定义
1. 生成验证码接口
- 请求 URL :
/captcha/getCaptcha - 交互逻辑:前端发起请求,后端生成验证码图片并直接返回,前端将图片渲染到页面展示。
- 作用:向用户提供待输入的验证码(通常包含字符 / 图形干扰,防止机器识别)。
2. 校验验证码接口
- 请求 URL :
/captcha/check - 请求参数 :
captcha(用户输入的验证码内容) - 响应结果 :
true(验证成功)/false(验证失败) - 交互逻辑:用户输入验证码后,前端将输入内容传给后端,后端对比 "生成时存储的验证码" 与 "用户输入内容",返回校验结果。
7.5Hutool⼯具介绍
一、Hutool 的定位
Hutool 是一个Java 工具包类库,通过封装 JDK 原生 API(如文件、加密、转码、正则等),形成各类静态工具类,是 "小而全" 的 Java 工具集。
二、Hutool 的核心特点
- 降低学习成本:以静态方法封装 API,无需深入理解底层实现即可快速使用;
- 提升开发效率:简化重复代码编写,让 Java 开发更简洁,兼具函数式语言的优雅性。
三、Hutool 的典型功能模块
包含多种实用工具类,例如:
- 日期工具:简化日期的解析、处理与转换;
- HTTP 客户端:封装 HTTP 请求操作;
- 转换工具:提供统一的类型转换方案;
- 配置文件工具:简化 Properties 等配置文件的读取;
- JDBC 工具:简化数据库操作(如 MySQL、Oracle 连接)。
Hutool官⽹:
Hutool参考⽂档:
Hutool源码:
7.6实现服务器端代码
1.引入依赖

2.实现验证码
根据API⽣成验证码,并进⾏测试