@Conditional的用法


@Conditional進行條件判斷: 符合條件則加載該bean,不符合則不加載該bean 示例

1、用於測試的bean實體
package com.bean;

/**
* @auto dh
* @create 2020-04-25-15:10
*/
public class Animal {
}

package com.bean;

/**
* @auto dh
* @create 2020-04-25-11:00
*/
public class Person {
}
2、實現condition的類
package com.condition;


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

/**
* @auto dh
* @create 2020-04-25-15:11
*/
public class Condition001 implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata annotatedTypeMetadata) {
// context 代表Ioc容器 context.getBeanFactory 從Ioc容器里獲取容器工廠
//    調用該容器工廠,判斷是否包含該bean名為animal
if(context.getBeanFactory().containsBean("animal")){
return true;
}
return false;
}
}
3、配置類
package com.configuration;

import com.bean.Animal;
import com.bean.Person;
import com.condition.Condition001;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

/**
* @auto dh
* @create 2020-04-25-15:15
*/
@Configuration
public class ConditionTest001 {
// @Bean
public Animal animal() {
return new Animal();
}

@Bean
// 如果Condition001.class返回true,則加載該bean,
// 否則不加載該bean
@Conditional(Condition001.class)
public Person person() {
return new Person();
}

}
4、測試類
package com.test;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
* @auto dh
* @create 2020-04-25-15:16
*/
public class ConditionTest001 {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(com.configuration.ConditionTest001.class);
String[] beans=ctx.getBeanDefinitionNames();
for(String str:beans){
System.out.println("bean信息:"+str);
}
}
}
 


免責聲明!

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



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