Spring系列(六):@Conditional注解用法介紹
今天給大家介紹@Conditional懶加載注解用法,希望對大家能有所幫助!? ? ? ?

? ? ? ?
1、@Conditional注解介紹
@Conditional是Spring4版本新提供的一種注解,它的作用是按照設定的條件進行判斷,把滿足判斷條件的bean注冊到Spring容器。
2、@Conditional的源碼內容如下:
說明:
@Conditional可以作用在方法上,也可以作用在類上。
使用的時候需要傳入實現Condition接口類數組。
如果是類和方法都加了@Conditional注解,最終在方法上的注解為最終的條件,如果返回true則加入容器,反之不會加入容器。
如果只是類上加了@Conditional注解,整個類的所有方法都會加入容器中。
3、用法示例
3.1 新建Book.java 文件
3.2 CNCondition.java 文件
3.3 ZHCondition.java 文件
3.4 新建TestConditionalConfig.java 配置文件
3.5 新建TestConditional.java 測試文件
4、@Conditional應用場景
在一些需要條件滿足才是實例化的類中,使用此注解,
比如項目中需要根據不同的場景使用不同的消息中間件,在消息隊列的實例化bean上,使用@Conditional注解,根據配置文件的不同,來判斷哪個bean需要加載到Spring容器中。
5、@Conditional的擴展注解
@ConditionalOnBean:僅在當前上下文中存在某個對象時,才會實例化一個Bean。
@ConditionalOnClass:某個class位于類路徑上,才會實例化一個Bean。
@ConditionalOnExpression:當表達式值為true的時候,才會實例化一個Bean。
@ConditionalOnMissingBean:僅僅在當前上下文中不存在某個對象時,才會實例化一個Bean。
@ConditionalOnMissingClass:某個class類路徑上不存在的時候,才會實例化一個Bean。
@ConditionalOnNotWebApplication:非web應用,才會實例化一個Bean。
@ConditionalOnBean:當容器中有指定Bean的條件下進行實例化。
@ConditionalOnMissingBean:當容器里沒有指定Bean的條件下進行實例化。
@ConditionalOnClass:當classpath類路徑下有指定類的條件下進行實例化。
@ConditionalOnMissingClass:當類路徑下沒有指定類的條件下進行實例化。
@ConditionalOnWebApplication:當項目是一個Web項目時進行實例化。
@ConditionalOnNotWebApplication:當項目不是一個Web項目時進行實例化。
@ConditionalOnProperty:當指定的屬性有指定的值時進行實例化。
@ConditionalOnExpression:基于SpEL表達式的條件判斷。
@ConditionalOnJava:當JVM版本為指定的版本范圍時觸發(fā)實例化。
@ConditionalOnResource:當類路徑下有指定的資源時觸發(fā)實例化。
@ConditionalOnJndi:在JNDI存在的條件下觸發(fā)實例化。
@ConditionalOnSingleCandidate:當指定的Bean在容器中只有一個,或者有多個但是指定了首選的Bean時,才會觸發(fā)實例化。