我有一个名为CommonConfig
的配置类,到目前为止工作正常......
@Data
@Component
@ConfigurationProperties(prefix = “my")
public class CommonConfig {
private String foo;
private String bar;
private SubA subA;
@Data
public static class SubA {
private String baz;
private SubB subB;
@Data
public static class SubB {
private String qux;
}
}
}
和Yaml property
文件一起使用:
my.foo: a
my.bar: b
my.sub-a.baz: c
my.sub-a.sub-b.qux: d
当我想要map
进入SubB:
my:
foo: a
bar: b
sub-a:
baz: c
sub-b:
qux: d
map:
number-one: 1
number-two: 2
number-three: 3
我尝试在我的SubB类中添加一个简单的地图声明:
...
@Data
public static class SubB {
private String qux;
private Map<String, Integer> map = new HashMap<>();
}
当我运行它时,所有其他属性都在配置中,但地图是空的。 我也尝试不初始化地图,但它保持为空。
我的@SpringBootApplication
课程之前一直处理得很好,只有一个注释。基于其他一些StackOverflow问题,我尝试添加@EnableConfigurationProperties
,但没有任何区别。
答案 0 :(得分:1)
这个例子确实很好用。我的特殊问题是一个未被读取的配置文件。
答案 1 :(得分:0)
application.yml
会自动加载。如果文件名是别的,Spring就不会自动加载它。@PropertySource
从SprintBoot 2.1开始不适用于YAML spring.config.name
和spring.config.location