首页 > 解决方案 > Springboot - 从 application.yml 注入取决于方法名称

问题描述

我参考了Spring Boot - 从 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 时。这种行为的原因是什么

标签: javaspringspring-boot

解决方案


要使用 Spring Boot 的Binder实用程序绑定到属性(就是这样@ConfigurationProperties做的),您需要在目标 bean 中有一个属性,并且您需要提供一个 setter 或使用可变值对其进行初始化。

Spring如何理解它需要使用SetPairs方法来设置你的pairMap属性?getter 和 setter 的命名有约定,如果您希望一切正常,则应遵循此约定。


推荐阅读