Spring Boot條件註解

2021-09-07 17:47:12 字數 1739 閱讀 4310

一、為什麼springboot產生於spring4?

spring4中增加了@condition annotation, 使用該annotation之後,在做依賴注入的時候,會檢測是否滿足某個條件來決定是否注入某個類。

@conditional是springframework的功能,springboot在它的基礎上定義了@conditionalonclass,@conditionalonproperty的一系列的註解來實現更豐富的內容。

觀察@conditionalonclass會發現它註解了@conditional(onclasscondition.class)。

@target() @retention(retentionpolicy.runtime) @documented @conditional(onclasscondition.class) public @inte***ce conditionalonclass ; string name() default {}; } 

onclasscondition則繼承了springbootcondition,實現了condition介面。

public inte***ce condition  

conditionevaluator中的

shouldskip方法則使用了 

@conditional中設定的

condition類。

二、@enable*註解和屬性對映

@enable*在spring 3框架就引入了這些註解,用來替代xml配置檔案。 

很多spring開發者都知道@enabletransactionmanagement注釋,它能夠宣告事務管理;@enablewebmvc注釋,它能啟用spring mvc;以及@enablescheduling注釋,它可以初始化乙個排程器。 

這些注釋事實上都是簡單的配置,通過@import注釋匯入。

@target(elementtype.type)

@retention(retentionpolicy.runtime)

@documented

@import()

public @inte***ce enableautoconfiguration ;

}

enableautoconfigurationimportselector類使用了spring core包的springfactoriesloader類的loadfactorynamesof()方法。 

springfactoriesloader會查詢meta-inf/spring.factories檔案中包含的jar檔案。 

當找到spring.factories檔案後,springfactoriesloader將查詢配置檔案命名的屬性。在例子中,是org.springframework.boot.autoconfigure.enableautoconfiguration。 

@configurationproperties(prefix = "spring.data.mongodb")

public class mongoproperties

@configurationproperties注釋將pojo關聯到指定字首的每乙個屬性。例如,spring.data.mongodb.port屬性將對映到這個類的埠屬性。 

SpringBoot 條件註解解析

當我們開發springboot專案時,有時候我們會根據不同的條件來建立相對應的bean物件,這個時候就用到了springboot自帶的條件註解,這裡我基於的springboot版本是 1.5.4.release 1 首先我們先定義乙個controller及其service介面 circulation...

springboot常見的條件依賴註解有

這些是springboot特有的,常見的條件依賴註解有 conditionalonbean,僅在當前上下文中存在某個bean時,才會例項化這個bean。conditionalonclass,某個class位於類路徑上,才會例項化這個bean。conditionalonexpression,當表示式為...

springboot 註解總結

springboot註解知識點歸納 當實現rest ful web services時,response將一直通過response body傳送。controller 用於定義控制器類,在spring 專案中由控制器負責將使用者發來的url請求 到對應的服務介面 service層 restcontr...