我有一个配置类FooConfig,其中有一个绑定类“ Foo”。
@Configuration
@ConfigurationProperties("foo")
public class FooConfig {
@Value("${foo.default.iterations}")
private Integer iterations;
private Foo foo;
// getter / setter
}
Run Code Online (Sandbox Code Playgroud)
在我的课程中Foo,当未在properties-file中明确设置时,我希望迭代变量集具有现有的默认配置值。
public class Foo {
private String name;
@Value("${foo.default.iterations}")
private Integer iterations;
// getter / setter
}
Run Code Online (Sandbox Code Playgroud)
我的属性文件
foo.default.iterations=999
# if this is set this config is bound (wins) in FooConfig-class as expected
# foo.iterations=111
foo.foo.name=foo
Run Code Online (Sandbox Code Playgroud)
在Works中设置默认值FooConfig,但不在我的绑定类中设置默认值Foo。
我在这里想念什么?
And*_*son 16
你不应该混合@Value,并@ConfigurationProperties在同一个班。如果要在带@ConfigurationProperties注释的类中具有默认值,则可以使用默认值配置字段:
@ConfigurationProperties("foo")
public class FooConfig {
private Integer iterations = 999;
// getter / setter
}
Run Code Online (Sandbox Code Playgroud)
此更改带来了额外的好处,即在由生成的元数据中包括默认值spring-boot-configuration-processor。元数据是使用你的IDE提供的自动完成功能,当你在编辑application.properties和application.yaml文件。
最后,且与您的问题没有直接关系,@ConfigurationProperties带有-带注释的类不应带有注释@Configuration。带@Configuration注释的类用于通过@Bean方法配置Bean 。您的FooConfig班级应使用注释@Component或在要使用@EnableConfigurationProperties(FooConfig.class)的@Configuration班级上使用FooConfig。
| 归档时间: |
|
| 查看次数: |
6446 次 |
| 最近记录: |