Spring條件注解@Conditional


  Spring4中提供了一種更通用的條件創建Bean的方式,即使用@Conditional注解。

  示例:

  通過在配置文件中修改ifCreate的值,來控制某個Bean的創建。

  (1)創建一個實現了Condition接口的類,實現matches方法,在matches方法返回的結果決定了Bean是否被創建。

  

 
         
package learnspring.learnspring.conditional;

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;

/**
* @author 肖政宇
* @date 2019-09-26 14:33
* 說明:判斷條件
*/
public class MyCondition implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
String ifCreate = conditionContext.getEnvironment().getProperty("ifCreate");
if ("true".equals(ifCreate)){
System.out.println("配置文件中,ifCreate的值為true");
return true;
}else {
System.out.println("配置文件中,ifCreate的值為false");
return false;
}
}
}
 

(2)Bean

 
         
package learnspring.learnspring.conditional;

/**
* @author 肖政宇
* @date 2019-09-26 14:45
* 說明:
*/
public class DemoBean {
public DemoBean() {
System.out.println("Hello,DemoBean已經被創建!");
}
}
 

(3)java配置類

 
         
package learnspring.learnspring.conditional;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

/**
* @author 肖政宇
* @date 2019-09-26 14:46
* 說明:
*/
@Configuration
public class MyConditionalConfiguration {

@Bean
@Conditional(MyCondition.class)
public DemoBean createBeanConditional() {
return new DemoBean();
}
}
 

(4)配置文件

 

(5)運行結果

 


免責聲明!

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



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