properties配置文件与yml配置文件的区别

properties与yml的区别

properties是@Value yml是@ConfigurationProperties


赋值比较

@Value这个使用起来并不友好!我们需要为每个属性单独注解赋值,比较麻烦;我们来看个功能对比图

图片

1、@ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加

2、松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。可以测试一下

3、JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性

4、复杂类型封装,yml中可以封装对象 , 使用value就不支持


yml通过@ConfigurationProperties(prefix = "对象名")来连接yml

image-20221007215248314

image-20221007215316888


而properties只能通过@Value("${name}")进行单个赋值

image-20221007215503343 image-20221007215517250

多环境切换比较

properties需要通过创建多个properties配置文件来设置不同的网络WEB端口

image-20221007215905056

并且通过spring.profiles.active=**来可以选择激活那一个配置文件

image-20221007220040763


但是yml只需要创建一个yml配置文件就可以实现多个web端口

image-20221007220538123


结论:

配置yml和配置properties都可以获取到值 , 强烈推荐 yml;

如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;

如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!


配置文件加载位置

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:

优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件

优先级由高到底,高优先级的配置会覆盖低优先级的配置;


注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!

posted @ 2022-10-07 22:11  骁峰  阅读(559)  评论(0编辑  收藏  举报