大家好,欢迎来到IT知识分享网。
在实际开发过程中,通常会使用yml文件对我们的项目进行一些配置,例如:配置程序的端口:
server: port: 9201
我们都知道这样配置,程序就会运行在9101端口上,但是大部分情况下,我们通常不会在意这个配置是如何生效的,或者说程序是怎么读取到端口这个配置的。本文就为大家介绍读取yml配置的几种方式。
目录
一、配置的几种数据格式
普通的值(布尔值、数字、字符串)
对象
List、数组、Set
Map
二、读取配置的方式
@Value
@ConfigurationProperties
@Environment
一、配置的几种数据格式
- 普通的值(布尔值、数字、字符串)
配置方式也很简单,就是通过key:value的方式进行配置,例如:
text: 我是字符串配置 numberv: 10 boolv: true
注意:冒号后面必须有一个空格
- 对象
student: name: 名字 age: 10
- List、数组、Set
这三种复杂集合类型的配置方式是一样的,也就是说既可以读取到List中,也可以读取到数组中,也可以读取到Set中。
注意:复杂集合类型配置的读取只能通过@ConfigurationProperties的方式来读取,具体的读取方式在第二部分介绍。
配置方式有如下三种方式:
ary: - 数组1 - 数组2 list: 列表1,列表2,列表3 set: [集合1,集合2,集合3]
- Map
map1: name: 刘德华 age: 10 map2: {name: 刘德华, age: 10}
二、读取配置的方式
- 2.1 @Value
直接在对应的变量上添加@Value注解即可,此时配置的key可以不与变量名相同。例如读取如下的配置:
text: 我是字符串配置 numberv: 10 boolv: true student: name: 名字 age: 10
代码如下:
结果如下:
当然,对于student这种配置方式,还可以使用2.2的方式进行读取。
- 2.2 @ConfigurationProperties
读取对象类型的数据:
配置项:
student: name: 刘德华 age: 40
需要新增一个Student类,同时添加@ConfigurationProperties注解:
@Data @ConfigurationProperties("student") public class Student { String name; int age; }
a
测试方法:
结果:
读取List、Set、数组、Map等复杂集合类型:
配置项:
jihe: ary: - 数组1 - 数组2 list: 列表1,列表2,列表3 set: [集合1,集合2,集合3] map1: name: 刘德华 age: 10 map2: {name: 刘德华, age: 10}
新增读取配置的类,同时添加@ConfigurationProperties注解:
@ConfigurationProperties("jihe") @Data public class PropertiesModel { // 按照数组方式读取时,打开此处,注释List和Set String[] ary; String[] list; String[] set; // 按照List方式读取时,放开此处,注释数组和Set /*List
ary; List
list; List
set; // 按照数组方式读取时,打开此处,注释List和数组 Set
ary; Set
list; Set
set;*/ Map
map1 = new HashMap<>(); Map
map2 = new HashMap<>(); }
注意:注解@ConfigurationProperties的value或者prefix是必填值,所以复杂类型必须有一个统一的key才行,像我们配置里的jihe
下面将展示按照上面的配置格式,分别使用数组、List、Set的结果。
同时,结果里面也顺便展示出Map的读取结果,就不再单独分开说明展示了。
数组方式的结果:
数组方式读取时,PropertiesModel的代码
List方式的结果:
List方式读取时,PropertiesModel的代码
Set方式的结果:
Set方式读取时,PropertiesModel的代码
- 2.3 @Environment
这种方式用得比较少,只展示一种基本的方式。
以上就是yml读取的基本用法啦,如有问题,请在评论区告诉我,或者有其它方式读取也可以评论告诉我,谢谢!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/90139.html