1.我们首先建一个JxdCondition 类 实现Condition 接口
import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotatedTypeMetadata; public class JxdCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { Environment environment =context.getEnvironment(); //可以获取到当前环境, java 底层api封装好了 String osName=environment.getProperty("os.name"); if(osName.equals("Windows 10")){//或者Linux return true;//可以注册 } return false;//不能注册 } }
2.我们在注入的时候加上 @Conditional(JxdCondition.class) 这个注解就可以
/** * 等于 Spring 的XML配置 */ @Configuration @ComponentScan("com.spring.entity") public class JxdSpringConfig { //<bean class="UserEntity" id =”方法名称getUser“/> @Bean @Conditional(JxdCondition.class) public User getUser() { return new User("jxd", 28); } }
测试
public class test { private static ApplicationContext applicationContext=new AnnotationConfigApplicationContext(JxdSpringConfig.class); public static void main(String[] args) { User userEntity =applicationContext.getBean("getUser", User.class); // JxdEntity jxdEntity =applicationContext.getBean("getUser", JxdEntity.class); System.out.println(userEntity.getAge()); System.out.println(userEntity.getUserName()); }