【发布时间】:2019-12-15 23:58:11
【问题描述】:
我正在尝试使用@ConfigurationProperties 将external.yml 属性注入POJO,并使用@PropertySource 导入我的external.yml 文件。所有其他都被注入到 POJO 中,但不是一个复杂的列表。
一个。我尝试将@NestedConfigurationProperty 用于复杂的列表和地图。
湾。我尝试将复杂的 POJO 作为内部静态和外部类。
C。尝试了@EnableConfigurationProperties 注释。等等
ExternalProp.java
@Component
@PropertySource(value = "classpath:external.yml", encoding = "UTF-8")
@ConfigurationProperties
@Data
public class ExternalProp {
private String bla;
private List<Person> persons;
private List<String> other;
@Data
public static class Person {
private int age;
private String name;
private Map<String, String> args;
}
}
external.yml
bla: bkdfjgkdf
persons:
- age: 12
name: bla1
args:
a0: a0dev
a1: a1dev
a2: a2dev
- age: 12
name: bla2
args:
b0: b0dev
b1: b1dev
b2: b2dev
strings: bla, bla1
bla: bkdfjgkdf 和 strings: bla, bla1 已正确注入,但未注入人员。我在哪里犯错了。
同样的 persons 对象复制到 application.yml 文件,然后,BOOM,正确获取值。
我期待一份人员列表,其中包含一些地图args。
【问题讨论】:
-
所以问题出在你使用 PropertySource 的时候对吗?如果它在没有 PropertySource 的 application.yml 中,它可以工作
-
@vanillaSugar - 是的。其他简单的 POJO 也不起作用。
-
我刚刚验证过,如果它是 external.properties 而不是 external.yml 它工作正常。
-
PropertySource 不支持 YAML
-
@SimonMartinelli 非常感谢,经过几个小时的搜索,这是我的错误
标签: java spring-boot yaml