我在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;
它不起作用
答案 0 :(得分:0)
我遇到了同样的问题,经过多次尝试,我的问题出在Set方法中。
使用@EnableConfigurationProperties必须实现setFields()方法。
答案 1 :(得分:0)
数字在yaml中不是有效的字段名称。尝试添加引号:
import-charge-fields:
"4": billDate
"1001": validUntil
"7": totalAmount
"24": purpose
您所有的Java尝试都是有效的,并且应该可以正常工作。