簡體   English   中英

從 application.yml 配置 @Autowired

[英]Configure @Autowired from application.yml

我們有一些有條件的豆子

@Service
@ConditionalOnProperties("${condition}")
class Foo {
 ...
}

我們希望能夠根據相同的條件自動裝配那些 bean,有沒有辦法做類似的事情:

@Autowired(required="${condition}")
private Foo foo;

有沒有辦法使用 application.yml 中的屬性獲得這樣的結果?

您可以使用@ConditionalOnProperty(value = "condition", havingValue = "true")創建一個 Foo 作為 bean,如下所示

@Configuration
public class BasicConfig {

    @Bean
    @ConditionalOnProperty(value = "condition", havingValue = "true")
    public Foo foo() {
        return new Foo();
    }
}

將這個foo bean 注入為

    @Autowired(required = false)
    private Foo foo;

@Autowired(required = false)用於將此字段設為可選。

只要滿足條件,這里的 foo 就會有價值,否則它將是 null。

您可以嘗試使用SPEL 例如: @Autowired(required="#{ systemProperties['user.region'] }")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM