【第三篇】 SpringBoot项目中的属性配置
简介
SpringBoot支持多种配置文件格式,包括application.properties、yml和yaml等。本文章将详细介绍这三种配置文件的内容格式和详细用法,以及在程序中如何对配置文件中的属性进行读取。文章内容若存在错误或需改进的地方,欢迎大家指正!若对操作有任何疑问欢迎留言!非常感谢!
目录
一、SpringBoot默认配置文件
1、application.properties文件
2、文件内容要求:
二、yml或者yaml配置文件
1、简介
2、语法规则
3、配置文件加载优先级
三、SpringBoot程序中读取配置文件属性的几种方式
1、使用@Value注解读取
2、使用Environment类对象获取属性
3、自定义对象映射配置文件属性
(1)创建定义对象
(2)将类交给Spring的IOC容器
(3)指定当前类加载的数据
(4)示例
一、SpringBoot默认配置文件
1、application.properties文件
该文件位于resources目录下,是随工程的创建而生成的一个空白文件(若没有可手动创建,必须保证名称和类型为application.properties),在这个文件中可以进行项目的配置。
2、文件内容要求:
- 键值对结构,格式为key=value
- 注释以#或者!开头
- 列表或者数组的值使用逗号隔开
- 使用点号
.
表示属性层级 - 想看系统支持哪些配置可以在Spring官方查看,链接:Common Application Properties
以配置启动端口为例,SpringBoot项目默认的启动端口为8080,现在将这个端口配置为8888。如下,只需要在application.properties文件中配置server.port=8888即可。
二、yml或者yaml配置文件
1、简介
yml文件和yaml文件本质上是同一种文件格式,没有实质性的技术区别。.yaml是官方推荐的标准扩展名,.yml是因为早期Windows限制3字符扩展名而流行。无论使用哪个扩展名,文件内容都遵循相同的 YAML 规范。所以下面在介绍文件时,也不再区分二者。
因为yaml文件内容的层次感更强,内容更加清爽,一目了然。所以,在实际项目中大部分情况下是使用.yaml或者.yml作为配置文件,application.properties文件使用的频率就较低些。一般情况下,三者不会共存。
2、语法规则
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
- 属性值前面添加空格(属性名与属性值之前使用冒号+空格作为分割)
- # 表示注释
- ${一级属性名.二级属性名... ...}表示属性引用
- 使用引号包裹带有转义字符的字符串才可以生效
# 普通使用
name: demo# 层级关系
user:name: zhangsanage: 18# 数组/列表格式
list:- zhangsan- lisi- wangwu
# 数组/列表缩略格式
list2: [zhangsan, lisi, wangwu]# 对象列表
users:- name: zhangsanage: 18- name: lisiage: 19- name: wangwuage: 20
# 对象列表缩略格式
users2: [{name:zhangsan, age:18},{name:lisi, age:19},{name:wangwu, age:20}]# ---------- 部分补充 ----------
# TRUE,true,True,FALSE,false,False
boolean: TRUE
# 6.23542343e+5 支持科学计数法
float: 3.14
# 0b1010_0111_0100_1010_1110 支持二进制、八进制、十六进制
int: 123
# 使用 ~ 表示null
null: ~
# 字符串可以直接书写
string: HelloWorld
# 可以使用双引号包裹特殊字符
string2: "Hello\nWorld"# 属性引用
baseUrl: "127.0.0.1"
tmp: ${baseUrl}:${server.port}}
3、配置文件加载优先级
当application.properties文件、yaml文件、yml文件三者共存时,文件中相同配置的加载优先级如下:
application.properties > yml > yaml
而三个文件中不同的配置就不存在加载优先级的问题,而是全部保留,也就是说三个文件的不同的属性都会被读到。
三、SpringBoot程序中读取配置文件属性的几种方式
1、使用@Value注解读取
程序中定义的属性名与配置文件中的属性名并没有强关联,也就是定义的时候无需强制保持一致。
使用@Value注解读取单个数据,属性名引用方式:${一级属性名.二级属性名... ...},只需要在大括号中加一个冒号然后写值就可以设置默认值:${一级属性名.二级属性名... ...:默认值}。
2、使用Environment类对象获取属性
使用@Autowired在类中注入Environment对象,然后使用getProperty方法接收配置文件中的属性名来获取属性值,可以进行非空判断来设置默认值。
3、自定义对象映射配置文件属性
(1)创建定义对象
需要根据配置文件的属性来创建自定义对象,自定义对象的属性名必须与配置文件的属性名保持一致,类名无需保持一致。
(2)将类交给Spring的IOC容器
在自定义类上增加@Component注解,让当前的类能够注册成IOC的Bean
(3)指定当前类加载的数据
在自定义类上面增加@ConfigurationProperties(prefix = "student")注解,并使用prefix属性指定配置文件中属性前缀。
(4)示例
通过上面三部就已经完成了配置文件中的属性对自定义类属性的映射,下面是一个使用示例: