Springboot-从application.yml注入,具体取决于方法名称

时间:2018-12-11 14:42:18

标签: java spring spring-boot

我引用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时不可以。这种行为的原因是什么

2 个答案:

答案 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