Spring 條件註解(conditional)
阿新 • • 發佈:2018-11-19
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