springbean的加载控制

1.通过improtselector接口控制

根据任意条件确认是否加载bean
public class MyImportSelector implements ImportSelector {@
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        try {
            Class <? > clazz = Class.forName("com.itheima.ebean.Mouse");
            if (clazz != null) {
                return new String[] {
                    "com.itheima.bean.Cat"
                };
            }
        } catch (ClassNotFoundException e) {
            return new String[0];
        }
        return null;
    }
}

2.使用@Conditional注解的派生注解设置各种组合条件控制bean的加载

public class SpringConfig {
  
   @Bean
   @ConditionalOnClass(Mouse.class)
    public Cat tom() {
        return new Cat();
    }
}

//未匹配指定类
public class SpringConfig {
   @Bean
   @ConditionalOnClass(Mouse.class)
   @ConditionalOnMissingClass("com.itheima.bean.Wolf")
    public Cat tom() {
        return new Cat();
    }
}

//匹配指定类型的bean
@Import(Mouse.class)
public class SpringConfig {
    @Bean
    @ConditionalOnBean(Mouse.class)
    public Cat tom() {
        return new Cat();
    }
}
@Import(Mouse.class)
public class SpringConfig {
@Bean
@ConditionalOnBean(name = "com.itheima.bean.Mouse")
    public Cat tom() {
        return new Cat();
    }
}

 

posted @ 2022-10-12 13:16  桃花雪  阅读(91)  评论(0编辑  收藏  举报