一文搞懂SpringBoot读取配置文件的骚操作

548 阅读3分钟

这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战

写在前面

SpringBoot都知道。一个配置文件走天下,结束了以前的SSM工程结构多配置文件的格局。最后一统天下。

大家都知道SpringBoot项目中管理配置文件的分为两种风格,其一是properties风格,其二是yaml风格。

我比较喜欢yaml风格,因为配置文件看起来层次感比较强。

取配置

yaml风格的语法可以总结为两点,采用key:value的配置形式;使用缩进表示层级关系。

我们都知道 直接取配置文件的是分两类 第一是直接取配置文件,比如我们直接就取个值,第二类是取多个,比如是list,比如取多个值(其实就是转实体)

第一种

yaml文件

person:
  userName: 一点东西

java文件

//直接取配置文件
@Value("${person.userName}")
private String userName;

第二种,下面我们通过一个实例来介绍yaml风格的语法及书写格式即将配置文件中值绑定给实体类。

1、首先需要新建两个类Person和Pet类,Pet类作为引用数据类型出现在Person中。

image.png

首先我们通过@ConfigurationProperties注解和@Component注解(关于注解 我们后面)

其一为@Component表示将这个类放入Spring容器托管。

其二为@ConfigurationProperties(prefix = "person")表示配置文件中以person开头的配置才会被映射到实体类的属性中。

新建yaml风格配置文件application.yml并在在yml文件中给实体类中的属性开始赋值。

image.png

从图中可以看出person作为第一级配置和@ConfigurationProperties(prefix = "person")中的prefix相同。

其次是对Person类中的各个属性赋值。

  • 我们发现userName、boss、birth、age都是直接赋值即可。

  • interests作为数组类型,其赋值形式是在[]直接放入所需元素。

  • animal作为List类型和数组类型赋值形式相同。

  • score作为Map集合类型采用{}形式,其中采用key:value形式赋值。

  • salarys作为set集合赋值形式同数组和List集合。

  • pet作为对象属性值,会产生二级赋值,也就是要写出Pet类中具体的属性名,并采用key:value形式赋值。

  • allPest是个比较综合的类型,Map集合中包括了List集合和Pet类型。

下面来测试在配置文件中的格式是否绑定正确?

在Controller层写获取Person对象接口。

image.png

启动SpringBoot项目并在浏览器测试,发现能准确获取到数据。

好了 关于读取配置文件的格式转化就到这里,我们下期再见 加油!!!

弦外之音

感谢你的阅读,如果你感觉学到了东西,您可以点赞,关注。也欢迎有问题我们下面评论交流

加油! 我们下期再见!

给大家分享几个我前面写的几篇骚操作

copy对象,这个操作有点骚!

干货!SpringBoot利用监听事件,实现异步操作