Conditional注解
作用多条件注入bean
//bean对象
public class Windows10 {
}
package spring.condition.condition;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* 在bean上添加@condition注解
* 条件注入bean
*/
public class MyCondition implements Condition {
/**
*
* @param conditionContext 获取上下文
* @param annotatedTypeMetadata 获取当前的注解信息
* @return
*/
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
//如果当前系统为windows10 允许注入
String property = conditionContext.getEnvironment().getProperty("os.name");
if (property.equals("Windows 10")){
return true;
}
return false;
}
}
package spring.condition.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import spring.condition.bean.Windows10;
import spring.condition.condition.MyCondition;
@Configuration
public class MyConfig {
@Bean
@Conditional(MyCondition.class)
public Windows10 windows10(){
return new Windows10();
}
}
package spring.condition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import spring.condition.bean.Windows10;
import spring.condition.config.MyConfig;
public class TestCondition {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
Windows10 windows10=(Windows10)context.getBean("windows10");
System.out.println(windows10);
}
}