我想以这样的方式配置spring bean:取决于布尔变量的值,两个可用连接bean中的一个在代码中自动装配。
下面是布尔变量的初始化:
//This is overridden as false from the properties file on the server.
@Value(value = "${my.property.connectionOne:true}")
private boolean connectionOne;
我以这种方式定义了Bean:
@Bean(name = "specificConnection")
public Destination getSpecificConnection() throws Exception {
if (connectionOne) { //boolean variable
return new ConnectionOne("DB");
}
else {
return new ConnectionTwo("XML");
}
}
其中ConnectionOne
和ConnectionTwo
都实现了Destination
我正在使用所需类中的bean:
@Autowired
@Qualifier(value = "specificConnection")
private Destination specificConnection;
然而,它似乎不起作用。即使我将布尔变量的值更改为false,它也只会返回ConnectionOne
。
我正在使用Spring版本4.2.0和Wildfly Server。
如果需要进一步澄清,请告诉我。
答案 0 :(得分:3)
我想以依赖于的方式配置spring bean 布尔变量的值
布朗变量必须在Spring初始化specificConnection
bean之前进行估值。
所以你应该做的就是使用值表达式。
@Value("${isConnectionOne}") // looks the value in the available placeholder
private boolean isConnectionOne;
@Bean(name = "specificConnection")
public Destination getSpecificConnection() throws Exception {
if (connectionOne) { //boolean variable
return new ConnectionOne("DB");
}
else {
return new ConnectionTwo("XML");
}
}
答案 1 :(得分:1)
这是弹簧型材的完美示例!看看这个链接:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html
在Spring中,您可以定义程序将运行的不同配置文件。根据您在application.properties中定义的设置,您的程序将使用这些配置文件的不同bean。 :)
我希望能帮到你!
Greethings
Noixes