尝试此代码:
@Configuration
@ConfigurationProperties(prefix = "aa")
@Validated
@Setter
@Getter
public class AA {
...
private BB bb;
@Bean
public BB bb() {
return new BB();
}
@Setter
@Getter
public static class BB {
private String someProperty;
}
}
application.yaml
aa:
bb:
someProperty: somevalue
运行应用程序时,“somevalue”未加载到 someProperty。但是,如果我将 @ConfigurationProperties(prefix = "aa.bb") 添加到 BB 类,则会加载它。为什么需要这个? Spring 应该使用 AA 类中的属性
private BB bb
自动构造 BB 类的前缀。
@Configuration
注释用于向Spring指示一个类包含定义bean的方法。 bean 是 Spring 管理的类的实例。
表示一个类声明了一个或多个@Bean方法,并且可以是 由 Spring 容器处理以生成 bean 定义和 在运行时对这些 bean 的服务请求... [更多信息]
@ConfigurationProperties
注解用于向Spring指示我们要从application.propertie
或application.yaml
加载外部属性。 (您可以使用@ConfigurationProperties注释@Bean类或方法)
外部化配置的注释。将其添加到类中 定义或
类中的@Bean
方法(如果您愿意) 绑定并验证一些外部属性(例如来自 .properties 文件)。 [更多信息]@Configuration
因此,如果没有
@ConfigurationProperties
注解,Spring 将不会自动从外部源加载属性。
您可以在“外部化配置”一章中找到更多信息。 这里