Springboot @ConfigurationProperties嵌套的yaml属性不会加载

时间:2019-03-18 17:21:22

标签: java spring-boot

出于某种原因,非嵌套属性会加载,但嵌套属性不会加载。

配置:

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和它自己的前缀注释内部类似乎不起作用。我想念什么吗?

1 个答案:

答案 0 :(得分:2)

您需要实例化您的profiles属性

private Profiles profiles = new Profiles();

就是这样。

之所以会这样,是因为您的内部class 不是 static
您不能直接实例化这种类型的class,而只能实例化内部封闭的环境。

设置您的class static,一切都会好起来的

public static class Profiles { ... }