出于某种原因,非嵌套属性会加载,但嵌套属性不会加载。
配置:
spring:
profile: junit
profiles:
include: base
配置类:
@ConfigurationProperties(prefix = "spring")
public class MyFirstProperties {
private String profile;
private Profiles profiles;
// getters and setters
public class Profiles
{
private String include;
// getters and setters
}
}
主类:
@SpringBootApplication
@EnableConfigurationProperties(MyFirstProperties.class)
public class Main {
public static void main(String... args) {
SpringApplication.run(Main.class, args);
}
}
当我向控制器注入配置类并为非嵌套属性调用getter时,它将返回其值。但是,嵌套属性的获取器将返回null。
使用ConfigurationProperties和它自己的前缀注释内部类似乎不起作用。我想念什么吗?
答案 0 :(得分:2)
您需要实例化您的profiles
属性
private Profiles profiles = new Profiles();
就是这样。
之所以会这样,是因为您的内部class
不是 static
。
您不能直接实例化这种类型的class
,而只能实例化内部封闭的环境。
设置您的class
static
,一切都会好起来的
public static class Profiles { ... }