3 回答
TA贡献1772条经验 获得超5个赞
@ConfigurationProperties
用于 POJO bean 将属性映射到其字段或设置器。然后,您可以使用该 bean 来访问应用程序逻辑中的属性值。
@PropertySource
是引用一个属性文件并将其加载到Spring环境中(其中可以被@ConfigurationProperties或@Value使用)。
@Value
是将特定属性值通过其键注入到变量(成员字段或构造函数参数)中。
TA贡献1887条经验 获得超5个赞
@Value("${spring.application.name}") 如果 application.properties/yml 文件中没有匹配的键,@Value 将抛出异常。它严格注入财产价值。
例如:@Value("${spring.application.namee}")抛出以下异常,因为namee属性文件中不存在字段。
application.properties file
----------------------
spring:
application:
name: myapplicationname
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testValue': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.namee' in value "${spring.application.namee}"
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.namea' in value "${spring.application.namee}"
@ConfigurationProperties(prefix = "myserver.allvalues")注入 POJO 属性,不严格,如果属性文件中没有 key 则忽略该属性。
例如:
@ConfigurationProperties(prefix = "myserver.allvalues")
public class TestConfigurationProperties {
private String value;
private String valuenotexists; // This field doesn't exists in properties file
// it doesn't throw error. It gets default value as null
}
application.properties file
----------------------
myserver:
allvalues:
value: sampleValue
TA贡献1770条经验 获得超3个赞
基于我的研究和理解::
@ConfigurationProperties
从加载属性
application.properties
您指定字段名称以对应于中的属性名称
application.properties
--
@ConfigurationProperties
不适用于@Value
@PropertySource
从您指定的文件加载属性
可以与
@Value
或 一起使用@Autowired Environment env;
@Value
它与
application.properties
application.properties
默认加载(不需要在 中指定@PropertySource
)
添加回答
举报