Spring 条件注解(conditional)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/github_38151745/article/details/83352096