通过@ConfigrationProperties
编写spring配置时,有一种方法可以连接配置的根值。
我的配置类似于
foo.bar=hello
foo.bar.baz=world
如何从foo.bar
变量中获取值。目前我有这个
@Configuration
@ConfigurationProperties("foo.bar")
public class FooBar {
private String baz;
// Getters and setters...
}
我无法更改架构。这些属性来自env变量FOO_BAR
和FOO_BAR_BAZ
答案 0 :(得分:1)
您需要使用@EnableConfigurationProprties(FooBar.class)
告诉spring boot为您的配置创建一个bean。这样的事情对你有用:
@Configuration
@EnableConfigurationProperties(FooBar.class)
class MyConfiguration {
final FooBar fooBar;
MyConfiguration(FooBar fooBar) {
this.fooBar = fooBar;
}
@ConfigurationProperties("foo.bar")
static class FooBar {
String baz;
// ....
}
@Bean
MyBean myBean() {
// use this.fooBar here...
}
}
答案 1 :(得分:0)
使用@PropertySource
注释为您的类添加注释,并添加一个变量来获取它。
@PropertySource("classpath:config.properties")
public class FooBar {
@Value("${foo.bar}")
private String baz;
}
答案 2 :(得分:0)
我正在为可能处于相同情况的某人写这篇文章:
您还可以使用类级别的@Component
代码:
@Configuration
@ConfigurationProperties(“ foo.bar”)
@Data
@AllArgsConstructor
@NoArgsConstructor
公共类FooBar {
私有字符串baz;
}
用于注释@ Data,@ AllArgsConstructor @NoArgsConstructor,安装并使用lombok dependency。