从Yaml读取显示空值

时间:2019-05-22 13:13:43

标签: java

要读取yaml文件,我正在执行以下操作

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties("partners")
public class YAMLConfig {

    private Map<String,String> partners = new HashMap<>();

    public void setPartners(Map<String, String> partners) {
        this.partners = partners;
    }

    public Map<String, String> getPartners() {
        return partners;
    }
}

yaml文件

person2:
  name: bbb
  addresses:
    to: jiang
    bit: su
partners:
  p1: wallet
  p2: wallet
  p3: wallet

在其他Java文件中,我正在自动接线以使YamlConfig高于

@Service
public class ObjectModificationService {

    @Autowired
    YAMLConfig yamlConfig;

    public  JSONObject modify(JSONObject jsonObject ) {
        String type  = yamlConfig.getPartners().get(partnerName.toLowerCase());
    }
}

我没有得到上面的任何类型,还检查了yamlConfig.getPartners()在调试中它是否为null。我正在按照本教程进行操作:https://www.baeldung.com/spring-yaml,但是当我放置不带ConfigurationProperties(“ partners”)的ConfigurationProperties时,IDE再次显示错误。

2 个答案:

答案 0 :(得分:0)

在yml配置类中,已将属性注释设置为“伙伴”,这意味着YAMLConfig类将尝试仅读取伙伴部分。不会读取“ person2”部分。

要检索依赖项注入的值,只需调用:yamlConfig.getPartners()

此外,请确保application.yml位于资源目​​录和/或与.jar相同的目录中

答案 1 :(得分:0)

您已指定合作伙伴地图接受字符串值。因此,请尝试在Yaml配置文件中使用用引号('')格式化的Map值

person2:
  name: bbb
  addresses:
    to: jiang
    bit: su
partners:
  p1: 'wallet'
  p2: 'wallet'
  p3: 'wallet'