Java 基于布尔变量的Autowire-springbean
我想以这样一种方式配置Springbean:根据布尔变量的值,两个可用连接bean中的一个在代码中自动连接 下面是布尔变量的初始化: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 =
//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中运行。