Springboot学习——配置
一、注意事项
1、配置是关联相关技术的,只有引用了相关starter,配置项才会生效。
2、配置的文档可以在springboot官网查看。
3、配置格式是键值对
二、三种配置文件格式
1.yaml
2.yml(主流)
3.properties(传统)
如果三种共存,则配置加载的优先顺序为:properties>yml>yaml,如果存在相同配置,会覆盖;不同配置保留
三、yaml数据格式
(一)语法格式
YAML(YAML Ain't Markup Language),一种数据序列化格式。具有容易阅读、容易与脚本语言交互、以数据为核心,重数据轻格式的特点。常见的文件扩展名有两种:
-
.yml格式(主流)
-
.yaml格式
对于文件自身在书写时,具有严格的语法格式要求,具体如下:
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
- 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
- “#”号 表示注释
- 如果idea是社区版,yml文件可能会不出现小叶子标志和自动注释,安装assistant插件,详情请见:https://blog.csdn.net/feinifi/article/details/129433111
核心的一条规则要记住,数据前面要加空格与冒号隔开
下面列出常见的数据书写格式
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
null: ~ #使用~表示null
string: HelloWorld #字符串可以直接书写
string2: "Hello World" #可以使用双引号包裹特殊字符
date: 2018-02-17 #日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00 #时间和日期之间使用T连接,最后使用+代表时区
此外,yaml格式中也可以表示数组,在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
subject:
- Java
- 前端
- 大数据
enterprise:
name: itcast
age: 16
subject:
- Java
- 前端
- 大数据
likes: [王者荣耀,刺激战场] #数组书写缩略格式
users: #对象数组格式一
- name: Tom
age: 4
- name: Jerry
age: 5
users: #对象数组格式二
-
name: Tom
age: 4
-
name: Jerry
age: 5
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ] #对象数组缩略格式
(二)读取格式
1.使用@Value注解
yaml中保存的单个数据,可以使用Spring中的注解直接读取,使用@Value可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
,参数填写属性名即可
3.读取某一类对象中的数据
Environment对象读取的是对象数据,若只想读取一部分数据:
- 首先定义一个对象,并将该对象纳入Spring管控的范围,也就是定义成一个bean,然后使用注解@ConfigurationProperties指定该对象加载哪一组yaml中配置的信息。数据属性名要与对象的变量名一一对应
- 在控制层注入对象
注意
如果对象包含多层属性,可定义多个Bean,参考以下文章:https://blog.csdn.net/blongz/article/details/117422404
(三)注意事项
1.如果yml中多次引用一个值,也可以用${}的形式获取
user:
- name: Rose
age : 22
girl:
name: ${user[0].name} White
2.YAML中默认对字符串不转义,转义使用双引号
本文作者:风一样的我1
本文链接:https://www.cnblogs.com/pengu1998/p/16961800.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?