根據(jù)配置加載實(shí)現(xiàn)類@Conditional

業(yè)務(wù)場(chǎng)景

項(xiàng)目原先需要調(diào)用公司其他團(tuán)隊(duì)開(kāi)發(fā)的存儲(chǔ)服務(wù),現(xiàn)在需要在使用一套代碼的情況下根據(jù)配置,切換使用原來(lái)的存儲(chǔ)服務(wù)和自己開(kāi)發(fā)的存儲(chǔ)服務(wù)

實(shí)現(xiàn)

  • 1.配置文件添加配置
    新的方案的配置文件添加:
    source=local

  • 2.新的實(shí)現(xiàn)類繼承舊的類,并在類上添加注解@Conditional(LocalCondition.class),并且重寫(xiě)因?yàn)闃I(yè)務(wù)而需要調(diào)整的方法

LocalCondition類作用是判斷配置文件中source的值是否是local,是的話返回true,配合@Conditional注解使用,作用就是source的值是local時(shí),就把該類加載到容器中。

public class LocalCondition implements Condition {

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        String local = context.getEnvironment().getProperty(LocalUtil.LOCAL_FLAG_COFING);
        return LocalUtil.LOCAL.equals(local);
    }
}
  • 3.舊的類添加注解@Conditional(ServiceCondition.class)

ServiceCondition類略

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容