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
本文详细介绍了Spring框架中条件注解的使用方法,通过自定义条件类和@Conditional注解,实现了根据不同操作系统创建对应的bean。文章提供了具体示例,包括LinuxCondition和WindowsCondition类的实现,以及ConditionConfig配置类的使用。
661

被折叠的 条评论
为什么被折叠?



