繁体   English   中英

基于布尔变量自动装配Spring Bean

[英]Autowire Spring Bean based on boolean variable

我想以这样的方式配置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");
    }
}

其中ConnectionOneConnectionTwo都实现了Destination

我在所需的类中使用bean作为:

@Autowired
@Qualifier(value = "specificConnection")
private Destination specificConnection;

但是,它似乎不起作用。 即使我将boolean变量的值更改为false,它也只会继续返回ConnectionOne

我使用的是Spring 4.2.0和Wildfly Server。

如果需要进一步说明,请与我们联系。

我想以这样一种方式配置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");
    }
}

这是弹簧型材的完美示例! 看看这个链接:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

在Spring中,您可以定义程序将运行的不同配置文件。根据您在application.properties中定义的设置,您的程序将使用这些配置文件的不同bean。 :)

我希望能帮到你!

Greethings

Noixes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM