为什么 ConfigurationProperties 类中的嵌套类需要是静态的?

Alp*_*lon 5 java spring spring-boot

application.yml在 spring boot 应用程序中使用一个文件作为外部配置,它绑定到AppConfig.java使用@ConfigurationProperties注释。在里面AppConfig.java我有基于层次结构的嵌套类application.yml。当我static用来声明嵌套类时,一切正常。但最近在一个项目中,我错过static了其中一个嵌套类,结果导致NullPointerException. 通过在线资源,我已经阅读了何时使嵌套类静态化以及何时不使嵌套类变为静态。不过,我需要了解的是如何结合application.ymlAppConfig.java发生在春季启动,为什么嵌套类需static

应用程序.yml

spring:
  foo:
    host: localhost
  bar:
    endpoint: localhost
Run Code Online (Sandbox Code Playgroud)

应用程序配置文件

@Component
@ConfigurationProperties("spring")
public class AppConfig {
    private Foo foo;
    private Bar bar;
    public static class Foo {
        private String host;
        // getter, setter
    }
    public class Bar {
        private String host;
        // getter, setter
    }
    //getters, setters
}
Run Code Online (Sandbox Code Playgroud)

当我AppConfig.java在其他课程中自动装配时,appConfig.getFoo()工作正常但appConfig.getBar()会导致NullPointerException.