springboot 条件注解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou920786312/article/details/89419034

声明:代码是JavaEE开发的颠覆者 Spring Boot实战代码中的,我买了这书,并练习 

public interface ListService {
	public String show();
}

public class LinuxListService implements ListService{
	@Override
	public String show() {
		return "linux";
	}
}
public class WindowsListService implements ListService {
	@Override
	public String show() {
		return "windows";
	}
}


------------------
@Configuration
public class ConditionConifg {
	@Bean
    @Conditional(WindowsCondition.class) //1如果是wind系统创建对应的bean
    public ListService windowsListService() {
        return new WindowsListService();
    }

    @Bean
    @Conditional(LinuxCondition.class) //2如果是Linux系统创建对应的bean
    public ListService linuxListService() {
        return new LinuxListService();
    }

}

----------------
public class LinuxCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context,
                           AnnotatedTypeMetadata metadata) {
        return context.getEnvironment().getProperty("os.name").contains("Linux");
    }

}
 
public class WindowsCondition implements Condition {

    @Override
    public boolean matches(ConditionContext context,
                           AnnotatedTypeMetadata metadata) {
        return context.getEnvironment().getProperty("os.name").contains("Windows");
    }

}

------------------

public class Main {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(ConditionConifg.class);
		
		ListService listService = context.getBean(ListService.class);
		System.out.println(context.getEnvironment().getProperty("os.name")
				+ "---------"
				+ listService.show());
		context.close();
	}
}

猜你喜欢

转载自blog.csdn.net/zhou920786312/article/details/89419034