SpringBoot–基础–09–条件注解
一、条件注解
1.1、代码和测试
SysService
public interface SysService {
void show();
}
WindowService
public class WindowService implements SysService {
@Override
public void show() {
System.out.println("我是Window");
}
}
LinuxService
public class LinuxService implements SysService{
@Override
public void show() {
System.out.println("我是linux");
}
}
LinuxCondition
public class LinuxCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String sysName = context.getEnvironment().getProperty("os.name");
if (sysName.contains("Linux")) {
return true;
}
return false;
}
}
WindowsCondition
public class WindowsCondition implements Condition {
@Override
public boolean matches(ConditionContext context,
AnnotatedTypeMetadata metadata) {
String sysName = context.getEnvironment().getProperty("os.name");
if (sysName.contains("Windows")) {
return true;
}
return false;
}
}
ConditionConifg
@Configuration
public class ConditionConifg {
@Bean
@Conditional(WindowsCondition.class) // 1如果是wind系统创建对应的bean
public SysService windowsListService() {
return new WindowService();
}
@Bean
@Conditional(LinuxCondition.class) // 2如果是Linux系统创建对应的bean
public SysService linuxListService() {
return new LinuxService();
}
}
Test
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConditionConifg.class);
SysService sysService = context.getBean(SysService.class);
String sysName = context.getEnvironment().getProperty("os.name");
System.out.println("当前的操作系统是:"+sysName);
System.out.println("------------------------------------");
sysService.show();
}
}
代码位置
https://gitee.com/DanShenGuiZu/learnDemo/tree/mysql_mybaties_DB/springboot-learn/springboot-4