我无法在春季引导中从Yaml注入Map <string,string =“”>,

时间:2019-02-08 09:29:17

标签: spring-boot yaml

我在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;

它不起作用

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

您所有的Java尝试都是有效的,并且应该可以正常工作。