springboot 配置读取小结 @ConfigurationProperties @Value @PropertySource

1、阅读本文,你能知道@ConfigurationProperties  @Value  @PropertySource 三者的使用

2、先给出结论:

@ConfigurationProperties  适用于注入配置文件内容对应一个bean的全部属性,
@Value 正如其名称一样,适合注入配置文件的单个值到bean中,@PropertySource则是指定属性来源于哪个配置文件,前面的两个注解(@ConfigurationProperties、@Value)如果不配合@PropertySource一起使用,则从默认的配置文件(application.yml/application.properties)中读取属性。

3、以下是一些试验操作示例截图

3.1 首先是@ConfigurationProperties的使用

对应配置文件里面情况: 

 最后生成的bean对象中各属性情况如下。

以上简单介绍了ConfigurationProperties的使用,下面介绍@value,试验截图如下

从容器中 看到目前两种形式下,属性都能获取到。那么有时候我们会将配置文件分为独立的配置,比如数据库连接的参数单独放在一个文件,现在尝试将以上两个原本位于property.yml 的属性移到其他配置文件,看看系统还能不能读到(注意由yml文件转到properties文件时配置的格式需要调整),例如如下图。

调整配置位置之后,我们看到bean的最新情况如下,都不在能获取到相关配置了。

 两种方式都没能取得配置,接下来我们配合@PropertySource注解一起使用看下情况(注意@PropertySource注解,默认是不支持yml配置文件读取的,也就是传入的配置文件必须是properties的)

最后确实都是拿到了相关参数。

4、最后再次回顾结论:

@ConfigurationProperties  适用于注入配置文件内容对应一个bean的全部属性,
@Value 适合注入配置文件的单个值到bean中,

@PropertySource则是指定属性来源于哪个配置文件,前面的两个注解(@ConfigurationProperties、@Value)如果不配合@PropertySource一起使用,则从默认的配置文件(application.yml/application.properties)中读取属性。 

猜你喜欢

转载自blog.csdn.net/ygy982883422/article/details/105453955