Conditional條件裝配原理

2021-10-03 15:26:12 字數 971 閱讀 5264

@conditional條件裝配是spring4引入的新特性,與@profile類似(偏向於靜態啟用和配置),而@conditional關注與執行時的動態選擇。api如下:

@target()

@retention(retentionpolicy.runtime)

@documented

public @inte***ce conditional

它允許乙個或多個condition,當所有condtion都匹配時,當前條件成立。condition介面定義如下:

@functionalinte***ce

public inte***ce condition

public inte***ce conditioncontext
而annotatedtypemetadata是spring4.0新加入的介面,而之前的annotationmetadata成為了它的子介面。

而基於spring的spring boot就有了不少的條件註解:@conditionalonclass  @conditionalonbean  @conditionalonproperty等。

接下來我們來看乙個springboot的註解api

@target()

@retention(retentionpolicy.runtime)

@documented

@conditional()

public @inte***ce conditionalonclass ;

string name() default {};

}

此時你看到了@conditionalonclass它是採用元標註@conditional()的方式定義。這是springboot上基於它定義乙個條件註解。看到這裡,你可以參照它進行自定義條件註解。

條件註解 Conditional

可以讓某乙個bean 在某些條件下 加入ioc容器,其他情況下不加ioc容器。a.準備普通bean b.增加條件bean 給每個bean設定條件,必須實現condition介面 如 oilcarcondition類 public class oilcarcondition implements co...

Conditional 按照條件註冊bean

conditional 通過改註解能判讀根據條件動態建立bean person類 public class person override public string tostring public person string name,int age public string getname p...

Conditional條件初始化bean的配置

在某些情況下我們無法進行bean的初始化。由於某種原因如果繼續初始化很可能丟擲異常。這個時候更好的做法是不進行初始化。例如在資料庫操作時,如果沒有配置資料來源的資訊。我們希望進行datasource的初始化。這時就可以使用 conditional來達到目的。在需要判斷的方法中加入 condition...