大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
public class Person {
private String name ;
private int age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
@Conditional({}) 按照一定的条件进行判断,满足条件给容器中注册bean
* 在类上使用表示,满足条件会执行这个类,如果不满足则类中所有方法都不会加载
* 在方法上使用表示,满足条件会执行这个方法
/**
* @Conditional({}) 按照一定的条件进行判断,满足条件给容器中注册bean
* ** 在类上使用表示,满足条件会执行这个类,如果不满足则类中所有方法都不会加载
* 如果系统是windows,给容器注册("bill")
* 如果系统是linux,给容器注册("linus")
*/
@Conditional({WindowsCondition.class})
@Configuration
public class MainConfig2 {
@Lazy
@Bean
public Person person() {
System.out.println("创建----------->>>>>>>>>");
return new Person("李四",99);
}
/**
* @Conditional({}) 按照一定的条件进行判断,满足条件给容器中注册bean
* ** 在方法上使用表示,满足条件会执行这个方法
* 如果系统是windows,给容器注册("bill")
* 如果系统是linux,给容器注册("linus")
*/
@Conditional({WindowsCondition.class})
@Bean("bill")
public Person person2() {
return new Person("bill gates",66);
}
@Conditional({LinuxCondition.class})
@Bean("linus")
public Person person3() {
return new Person("linus",49);
}
}
public class WindowsCondition implements Condition{
/**
* 判断是否是Windows系统
* ConditionContext:判断条件能使用的上下文(环境)
* AnnotatedTypeMetadata:注释信息
*/
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
//1、能获取到ioc使用的beanfactory
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
//2、获取类加载器
ClassLoader classLoader = context.getClassLoader();
//3、获取当前环境信息
Environment environment = context.getEnvironment();
//4、获取到bean定义的注册类
BeanDefinitionRegistry registry = context.getRegistry();
String property = environment.getProperty("os.name");
if(property.contains("Windows")) {
return true;
}
return false;
}
}
public class LinuxCondition implements Condition{
/**
* 判断是否是linux系统
* ConditionContext:判断条件能使用的上下文(环境)
* AnnotatedTypeMetadata:注释信息
*/
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
//1、能获取到ioc使用的beanfactory
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
//2、获取类加载器
ClassLoader classLoader = context.getClassLoader();
//3、获取当前环境信息
Environment environment = context.getEnvironment();
//4、获取到bean定义的注册类
BeanDefinitionRegistry registry = context.getRegistry();
String property = environment.getProperty("os.name");
if(property.contains("Linux")) {
return true;
}
return false;
}
}
@SuppressWarnings("resource")
@Test
public void test02() {
AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(MainConfig2.class);
System.out.println(Arrays.deepToString(acac.getBeanDefinitionNames()));
String[] definitionNames = acac.getBeanDefinitionNames();
for (String string : definitionNames) {
System.out.println(string);
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/209958.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...