Spring @Conditional注解的使用


http://blog.csdn.net/mn960mn/article/details/51190590

 

spring Boot的強大之處在於使用了Spring 4框架的新特性:@Conditional注釋,此注釋使得只有在特定條件滿足時才啟用一些配置。

下面來介紹如何使用Condition

 

首先寫一個類

 

[java]  view plain  copy
  1. package com.test.spring;  
  2.   
  3. import org.springframework.context.annotation.Condition;  
  4. import org.springframework.context.annotation.ConditionContext;  
  5. import org.springframework.core.type.AnnotatedTypeMetadata;  
  6.   
  7. public class MyCondition implements Condition  
  8. {  
  9.     /** 
  10.      * 這里寫自己的邏輯,只有返回true,才會啟用配置 
  11.      */  
  12.     public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata)  
  13.     {  
  14.         return true;  
  15.     }  
  16. }  


接下來就可以使用了

 

 

[java]  view plain  copy
  1. package com.test.spring;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. import org.springframework.context.annotation.Bean;  
  6. import org.springframework.context.annotation.Conditional;  
  7. import org.springframework.context.annotation.Configuration;  
  8.   
  9. @Configuration  
  10. @Conditional(MyCondition.class)  
  11. public class Config  
  12. {  
  13.     @Bean  
  14.     public Serializable createSerializable()  
  15.     {  
  16.         System.out.println("======000");  
  17.         return "";  
  18.     }  
  19. }  


@Conditional(MyCondition.class)

 

這句代碼可以標注在類上面,表示該類下面的所有@Bean都會啟用配置

也可以標注在方法上面,只是對該方法啟用配置

 

除了自己自定義Condition之外,Spring還提供了很多Condition給我們用

@ConditionalOnBean(僅僅在當前上下文中存在某個對象時,才會實例化一個Bean)
@ConditionalOnClass(某個class位於類路徑上,才會實例化一個Bean)
@ConditionalOnExpression(當表達式為true的時候,才會實例化一個Bean)
@ConditionalOnMissingBean(僅僅在當前上下文中不存在某個對象時,才會實例化一個Bean)
@ConditionalOnMissingClass(某個class類路徑上不存在的時候,才會實例化一個Bean)
@ConditionalOnNotWebApplication(不是web應用)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM