簡體   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