亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何從條件自動綁定屬性Bean的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

有沒有辦法自動布線處于正常狀態(tài)的Bean?

還有一個例子。我們有2個文件管理器的實(shí)現(xiàn)。其中一個實(shí)現(xiàn)應(yīng)該根據(jù)屬性‘Platform’在中進(jìn)行初始化。通過Archaius的屬性句柄。

@Component
public class AwsPlatformCondition implements Condition {

    @Autowired
    private ArchaiusProperties archaiusProperties;

    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        return "aws".equalsIgnoreCase(archaiusProperties.getStringProperty(PropertiesMapper.PLATFORM));
    }
}

@Component
public class StandardPlatformCondition implements Condition {

    @Autowired
    private ArchaiusProperties archaiusProperties;

    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        return "standard".equalsIgnoreCase(archaiusProperties.getStringProperty(PropertiesMapper.PLATFORM));
    }
}

@Component
@Conditional(AwsPlatformCondition.class)
public class AS3FileManager implements FileManager {
...
}

@Component
@Conditional(StandardPlatformCondition.class)
public class NativeFileManager implements FileManager {
...
}

此代碼不起作用。主要原因是當(dāng)條件匹配時,ArchaiusProperties Bean不會初始化。有什么方法可以在條件下使用ArchaiusProperties Bean之前對其進(jìn)行初始化嗎?

推薦答案

如果我們查看java docsCondition接口-

條件必須遵循與BeanFactoryPostProcessor相同的限制,并且注意不要與Bean實(shí)例交互。

限制是(來自java docs,共BeanFactoryPostProcessor)

ABeanFactoryPostProcessor可以與Bean定義交互并對其進(jìn)行修改,但絕不能Bean實(shí)例。這樣做可能會導(dǎo)致Bean過早實(shí)例化,從而破壞容器并導(dǎo)致意外的副作用。

因此,您嘗試實(shí)現(xiàn)的是不推薦的;其副作用已經(jīng)出現(xiàn)。

但是,如果我們在文檔中進(jìn)一步搜索Condition,我們會得到

有關(guān)與@ConfigurationBean交互的條件的更細(xì)粒度控制,請考慮ConfigurationCondition接口。

此處也違反了限制。因此,總而言之,在此方案中使用Condition不是一個好主意。

因此,對于您來說,最好的選擇是使用@Profile,其中您可以一次激活所需的配置文件并使用相應(yīng)的Bean;而不考慮所附的裝飾。

這篇關(guān)于如何從條件自動綁定屬性Bean的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標(biāo)簽:Bean 屬性 條件 綁定
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定