版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_38151745/article/details/83352096
Spring 的条件注解在于 :根据满足某一个特定条件创建一个特定的bean ,例如,当某个jar 包在一个类的路径下,自动配置一个或多个bean 或者只有某个bean 被创建才会创建另外一个bean 总的来说, 就是通过特定的条件来控制bean 的创建行为。
主要是实现为两步
首先 实现 condition 类 。重写 matchs 方法
/**
* Created by Sean on 2018/7/20
*
* @author Sean
*/
public class LinuxCondition implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
return conditionContext.getEnvironment().getProperty("os.name").contains("Linux");
}
}
/**
* Created by Sean on 2018/7/20
*
* @author Sean
*/
public class WindowsCondition implements org.springframework.context.annotation.Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
return conditionContext.getEnvironment().getProperty("os.name").contains("Windows");
}
}
通过 conditional 注解,符合对于的条件则实例化对于的bean
/**
* Created by Sean on 2018/7/20
*
* @author Sean
*/
@Configuration
public class ConditionConfig {
@Bean
@Conditional(WindowsCondition.class)
public IUser windowsUser(){
return new WindowsUserImol();
}
@Bean
@Conditional(LinuxCondition.class)
public IUser linuxUser(){
return new LinuxUserImpl();
}
}
github URLspringbootcondition