@Conditional
1.作用
通过条件判断来给容器中添加组件。
可以标注在类上,也可以标注在方法上。
2.具体实现
2.1创建条件判断类
所创建的类实现Condition接口,并进行相应的条件判断。
//在windows操作系统下
public class WindowCondition implements Condition{
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
// TODO Auto-generated method stub
//获取程序运行环境信息。
Environment environment = context.getEnvironment();
String osname = environment.getProperty("os.name");
if(osname.contains("Window"))
return true;
return false;
}
}
//在Linux操作系统下
public class LinuxCondition implements Condition{
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
// TODO Auto-generated method stub
Environment environment = context.getEnvironment();
String osname = environment.getProperty("os.name");
if (osname.contains("Linux")) {
return true;
}
return false;
}
}
2.2在组件上添加@Conditional注解
在组件上添加@Conditional注解,并添加条件判断类
@Conditional(WindowCondition.class)
@Bean("xiaohua")
public Person person01() {
return new Person("小花",13);
}
@Conditional(LinuxCondition.class)
@Bean("xiaoli")
public Person person02() {
return new Person("小李",14);
}