条件注解的使用
SysService.java
package com.yhw.condition.service;
public interface SysService {
void show();
}
WindowService.java
package com.yhw.condition.service.impl;
import com.yhw.condition.service.SysService;
public class WindowService implements SysService {
@Override
public void show() {
System.out.println("我是Window");
}
}
WindowsCondition.java
package com.yhw.condition.service.impl;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
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;
}
}
LinuxService.java
package com.yhw.condition.service.impl;
import com.yhw.condition.service.SysService;
public class LinuxService implements SysService {
@Override
public void show() {
System.out.println("我是linux");
}
}
LinuxCondition.java
package com.yhw.condition.service.impl;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
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;
}
}
ConditionConifg.java
package com.yhw.condition.config;
import com.yhw.condition.service.SysService;
import com.yhw.condition.service.impl.LinuxCondition;
import com.yhw.condition.service.impl.LinuxService;
import com.yhw.condition.service.impl.WindowService;
import com.yhw.condition.service.impl.WindowsCondition;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
@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();
}
}