1. 程式人生 > >Spring 條件註解(conditional)

Spring 條件註解(conditional)

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