【问题标题】:I can not Inject Map<String, String> from yaml in spring boot我无法在 Spring Boot 中从 yaml 注入 Map<String, String>
【发布时间】:2019-02-08 09:29:16
【问题描述】:

我在 application.yaml 中有这个值

import-charge-fields:
  4: billDate
  1001: validUntil
  7: totalAmount
  24: purpose

在服务中我尝试注入它:

    @Value("${import-charge-fields}")
    private Map<String, String> fields;

但我得到了例外:

原因:java.lang.IllegalArgumentException:无法解析 值“${import-charge-fields}”中的占位符“import-charge-fields”

我试试这个:

charge:
  hz: 123
  fields:
    4: billDate
    1001: validUntil
    7: totalAmount
    24: purpose

@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "charge")
public class ChargeFields {
   private String hz;
   private Map<String, String> fields;
}

@Value("${charge.hz}")
private String hz;

@Value("${charge.fields}")
private Map<String, String> fields;

它不起作用

【问题讨论】:

标签: spring-boot yaml


【解决方案1】:

我遇到了同样的问题,经过多次尝试,我的问题出在 Set Method 中。

使用@EnableConfigurationProperties 你必须实现 setFields() 方法。

【讨论】:

    【解决方案2】:

    数字不是 yaml 中的有效字段名。尝试添加引号:

    import-charge-fields:
      "4": billDate
      "1001": validUntil
      "7": totalAmount
      "24": purpose
    

    你所有的 java 尝试都是有效的,应该可以工作。

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 2015-08-11
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 2020-09-08
      • 2013-12-18
      相关资源
      最近更新 更多