1. 程式人生 > >spring boot條件註解@Conditional

spring boot條件註解@Conditional

public class WindowsCondition implements Condition {
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return context.getEnvironment().getProperty("os.name").contains("Windows");
    }
}

public class LinuxCondition implements Condition {
    public
boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { return context.getEnvironment().getProperty("os.name").contains("Linux"); } } public interface ListService { public String showListCmd(); } public class WindowsListService implements ListService { @Override
public String showListCmd() { return "dir"; } } public class LinuxListService implements ListService { @Override public String showListCmd() { return "ls"; } } @Configuration public class ConditionConfig { @Bean @Conditional(WindowsCondition.class) public
ListService windowsListService() { return new WindowsListService(); } @Bean @Conditional(LinuxCondition.class) public ListService linuxListService() { return new LinuxListService(); } } public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConditionConfig.class); ListService listService = context.getBean(ListService.class); System.out.println(context.getEnvironment().getProperty("os.name") + "系統下的列表命令為: " + listService.showListCmd()); } }