YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁,但描述数据的方式略微难于xml。
YML文件的扩展名可以使用.yml或者.yaml,虽然扩展名不同,但二者没有本质区别。
- 配置普通数据(单个键值)
语法: key: value
示例:键与冒号之间没有空格,而值与空格间必须有一个英文半角空格
- 配置对象数据(对象中含有多个属性和对应值)
语法1:
key:
key1: value1
key2: value2
示例:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别,但一般默认两个空格,缩进多度也影响阅读。
语法2:
key: {key1: value1,key2: value2}
示例:
- 配置Map数据
语法同上,上述数据结构既可以解析为对象,也可以解析为map集合。这里不再举例。
- 配置数组(List、Set)数据
语法1:
key:
- value1
- value2
示例:value1与之间的 - 之间存在一个空格
语法2:
key: [value1,value2]
示例:
当集合中的元素为对象形式的时候:
@Value 注解用于配置文件中单个键值的映射。
我们写一个controller,其中随便定义几个属性来接收配置文件中的值:
启动工程访问 http://localhost:8080/getValue
访问成功,接下来看控制台:OK
我们使用注解 @ConfigurationProperties可以完成配置文件中对象值到Java配置对象的映射
下来看代码:
控制台输出也没有问题:
需要注意的是,person类这里必须提供get和set方法,否则将无法获得配置文件中的值,此注解是通过set方法向对应的属性赋值的。而我们在使用@value 注解的情况下,是不用set方法也可以的。
我们可以再来配置一下其他的类型,例如集合,数组类型,我们修改一下配置文件:
同时修改一下配置类,再添加一个类:
最后控制台输出:
name: chenfeilin
person: Person{name=‘feilin’, age=24, mylist=[chenfeilin, 777, nagasawa_masami], address=[beijing, tianjin, shanghai, chongqing], girlFriends=[Girl{girlName=‘zhangsan’, girlAge=18}, Girl{girlName=‘lisi’, girlAge=28}, Girl{girlName=‘wangwu’, girlAge=38}]}
personName: feilin
如果你有多个yml配置文件的话,在和配置类映射时,可以通过注解 @PropertySource 来将其区分,
我们先随便创建一个配置文件,将person的内容拷贝过去,然后给person类加上注解
具体的使用实例如下:
控制台输出结果不变:
person: Person{name=‘feilin’, age=24, mylist=[chenfeilin, 777, nagasawa_masami], address=[beijing, tianjin, shanghai, chongqing], girlFriends=[Girl{girlName=‘zhangsan’, girlAge=18}, Girl{girlName=‘lisi’, girlAge=28}, Girl{girlName=‘wangwu’, girlAge=38}]}
这里需要注意的一点是,注解 @PropertySource 在不指定factory属性的情况下肯定是是不会报错的,但是他将无法将我们yml配置文件中的值加载出来,这里不指定factory属性时应该是使用了默认的加载器,但其默认不支持加载yml文件,所以记得要加上这个yml文件加载工厂类。
SpringBoot的配置文件,主要的目的就是对默认的配置信息进行修改的,但是我们不可能完全记住所有配置的键值,在使用时可以去翻阅文档
这里提供了一个springboot【2.0.1.RELEASE】版本的官网配置文档:
文档URL:
https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#common-application-properties
上边官网提供的配置信息的查询,是帮助我们将配置信息的认识从无到有的,当我们掌握和熟练使用一些配置信息后,肯定还是会不查资料,直接去写的,但是因为种种不可描述的原因,写错球咯,这时候需要一些提示功能帮我们找回记忆!
介绍这个内容的博客也有很多了,而且这个也不用写代码,没啥技术含量,就不重复造轮子了,附上一个之前看过的博客链接:
解决idea不支持SpringBoot yml文件
以及中文注释乱码问题:
spring boot application.yml文件中文注释乱码
补充:
我用的idea版本可能比较新
里边使用到的插件可能和上边博客的不一致,这里附图
再补充:
有时候你自己创建yml文件,或者使用其他插件创建yml文件的时候,例如JBLSpringBootAppGen插件,在你刚刚创建出文件时,会发现yml中无法提示,即使你在之前的项目中已经有了提示,此时可能也还是会没有提示,你需要将项目Rebuild之后再操作yml文件,此时提示才会生效。0.0
当yml文件过长或想根据业务划分的话,可以用以下配置,引入拆分出去的子配置文件
嵌套单个:
嵌套多个:
子配置文件名为application-xxx.yml,例如嵌套单个时:application-filename.yml
附上链接:
1.springboot多环境配置文件,如何包含多个yml配置文件?看这一篇就够了
2.springboot配置多个yml文件
3.关于SpringBoot的application.yml的相关配置(自定义,开发,测试,正式)切换
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/12117.html