一、properties文件
1-1、什么是 .properties
文件?
.properties
文件是一种 简单的键-值对配置文件,通常用于存储应用程序的配置信息,例如数据库连接信息、日志级别、系统参数等。
它是 Java 和 Spring 中非常常见的一种配置格式。
1-2、基本语法
key=value
示例:
# 数据库配置
db.url=jdbc:mysql://localhost:3306/test
db.username=root
db.password=123456
# 应用设置
app.name=MyApp
app.version=1.0.0
# 布尔和数字
feature.enabled=true
max.connections=10
注意事项:
语法规则 | 示例 |
---|---|
支持注释 | # 这是注释 或 ! 注释 |
默认用 = 或 : 分隔 | key=value 或 key: value |
可以使用 \ 换行 | key=abc\ 换行继续 |
支持 Unicode 转义 | zh.name=\u738B\u601D 表示中文 |
1-3、在 Spring 中的使用场景
Spring 常用 .properties
文件来做以下事情:
1. 外部化配置
将数据库连接、Redis 配置、日志路径等抽离到配置文件中,方便维护和部署。
例如:
# db.properties
db.url=jdbc:mysql://localhost:3306/test
db.username=root
db.password=123456
然后在 XML 或 Java 配置中引入:
<context:property-placeholder location="classpath:db.properties"/>
通过 ${db.url}
这种占位符方式注入属性。
2. 和 Java 代码读取结合
在不使用 Spring 的情况下,你也可以直接通过 java.util.Properties
类来读取 .properties
文件:
Properties props = new Properties();
InputStream input = new FileInputStream("config.properties");
props.load(input);
String dbUrl = props.getProperty("db.url");
1-4、Spring Boot 中也用 .properties
Spring Boot 使用 application.properties
或 application.yml
来管理配置,功能更强大,例如:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
1-5、小结
优点 | 说明 |
---|---|
简洁 | 键值对结构清晰,易维护 |
解耦 | 把配置信息从代码中抽离 |
灵活 | 可根据环境、模块、版本切换配置 |
二、yml文件
.yml
(或 .yaml
)已成为一种非常流行的配置文件格式,相比 .properties
更加结构化、可读性更好。
2-1、.yml
是什么?
.yml
(YAML 格式)是一种数据序列化语言,全称是 YAML Ain't Markup Language。它常用于配置文件中,语法简洁,支持嵌套结构。
2-2、Spring / Spring Boot 如何使用 .yml
?
在 Spring Boot 项目中,你可以使用 application.yml
来替代 application.properties
,二者作用一样,但 .yml
更清晰易读,支持嵌套层级。
示例:用 .yml
写配置
原来的 application.properties
:
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
改成 application.yml
:
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
结构清晰,逻辑更直观!
2-3、使用位置和规则
Spring Boot 默认会从以下位置加载配置文件(优先级从高到低):
-
application.yml
/application.properties
放在resources/
下(推荐) -
config/application.yml
(子目录中) -
命令行参数
--spring.config.location
-
外部路径(如部署时传入)
2-4、多环境配置(profile)示例:
spring:
profiles:
active: dev
---
spring:
config:
activate:
on-profile: dev
server:
port: 8081
---
spring:
config:
activate:
on-profile: prod
server:
port: 80
这就实现了:在不同环境使用不同配置。
三、.yml
和 .properties
对比总结:
特性 | .properties | .yml |
---|---|---|
可读性 | 一般 | 更好,层级清晰 |
嵌套结构 | 不方便 | 原生支持 |
注释支持 | 支持 # | 支持 # |
错误容忍性 | 容错高 | 缩进错误容易报错 |
Spring 支持 | 支持 | 完全支持,推荐 |
注意事项
-
.yml
文件必须用空格缩进,不能用 tab! -
缩进必须对齐,否则 Spring 启动时报错
-
Spring Boot 自动识别
.yml
,不需要额外配置
如你用的是 Spring(非 Spring Boot),可以结合 YamlPropertiesFactoryBean
来加载 .yml
,不过 Spring Boot 的支持是最完整的。