我引用Spring Boot - inject map from application.yml来从application.yml文件中注入地图
我的application.yml代码段如下
easy.app.pairMap:
test1: 'value1'
test2: 'value2'
属性文件如下所示
@Component
@Configuration
@ConfigurationProperties("easy.app")
@EnableConfigurationProperties
public class TestProperties {
private Map<String, String> pairMap= new HashMap<String, String>();
public void setPairMap(Map<String, String> pairMap) {
this.pairMap= pairMap;
}
}
但是,我发现只有在setter和getter的格式正确时才进行值注入。例如,getPairMap和setPairMap。使用getPairs或SetPairs时不可以。这种行为的原因是什么
答案 0 :(得分:1)
要使用Spring Boot的Binder
实用程序(即@ConfigurationProperties
来绑定属性),您需要在目标Bean中拥有一个属性,并且需要提供一个setter或对其进行初始化。具有可变的值。
Spring如何理解需要使用SetPairs
方法来设置pairMap
属性?有一个用于命名getter和setter的约定,如果您希望一切正常,则应遵循此约定。
答案 1 :(得分:1)
Spring使用您的属性全名easy.app.pairMap
通过前缀ConfigurationProperties
找到easy.app
,然后尝试查找名称为setPairMap
的二传手,它使用属性名{{1} }并将其“转换”为pairMap
。
如果您创建方法setPairMap
,则属性名称应类似于setPairs
。