Java 基于布尔变量的Autowire-springbean

Java 基于布尔变量的Autowire-springbean,java,spring,Java,Spring,我想以这样一种方式配置Springbean:根据布尔变量的值,两个可用连接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 =

我想以这样一种方式配置Springbean:根据布尔变量的值,两个可用连接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");
    }
}
其中,
连接一个
连接两个
都实现了
目的地

我在所需的类中使用bean,如下所示:

@Autowired
@Qualifier(value = "specificConnection")
private Destination specificConnection;
然而,它似乎不起作用。即使我将布尔变量的值更改为false,它也会不断返回
ConnectionOne

我使用的是Spring版本4.2.0和Wildfly服务器


如果需要进一步澄清,请告诉我。

这是一个完美的spring配置文件示例!请查看此链接:

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

我希望这能帮助你

贪婪的

黑克斯

我想以这样一种方式配置Springbean,根据 布尔变量的值

必须在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");
    }
}

显示初始化connectionOne的位置是否确定connectionOne boolean为false?如果定义了connectionOne变量并将其更改为valueyes@Betlista,则该属性将从服务器属性文件中重写@请参见下文//这是从服务器上的属性文件中重写的
@Value(Value=“${my.property.connectionOne:true}”)私有布尔连接@Ааааааааааааааааааа107。另一个替代方案是beanfactory概念。春天有很多方法!正确的。如果它不是太复杂,并且有意义,你可以证明:)@davidxxx我只是这样做的。但它似乎仍然不起作用。这是仅用于Spring启动应用程序还是用于普通Spring应用程序?另外,使用配置文件,我想我可以根据我的配置文件连接不同的bean,但是我可以使用相同的方法返回不同的结果吗?@phoenixSid我认为您需要spring boot,但它应该可以为您提供。davidxxx应该有一个正确的答案来创建带有布尔值的bean。但您应该提供一种在运行时更改此变量的方法。:)是的,我们正计划逐步转向spring引导架构,但在此之前,它的正常spring应用程序将在wildfly中运行。