springboot关于注册条件相关内容

核心注解为@Condition

//如果配置文件中存在了指定信息,才会注入,否则不注入
@ConditionalOnProperty(prefix = "country",name={"name","system"})

此时因为配置文件中没有指定信息,所以没有注入到ioc池中,

Country country = context.getBean(Country.class);
所以在启动类中无法获取此bean对象,报错
No qualifying bean of type 'cn.itcast.pojo.Country' available

    //如果ioc容器中不存在contry,否则不注入
    @ConditionalOnMissingBean(Country.class)

举例

    @ConditionalOnMissingBean(Country.class)
    @Bean
    public Province province(){
        return new Province();
    }

此时在ioc池中已经存在Country,所以并不会把Province对象注入到ioc容器中,所以在从ioc容器中取出Procvince对象时会报错

No qualifying bean of type 'cn.itcast.pojo.Province' available

@ConditionOnClass使用

如果在当前环境中存在指定类时类,则注入

举例

    //如果在当前环境中存在指定类时类,则注入
    @ConditionalOnClass(name = "cn.itcast.pojo.Country")
    @Bean
    public Province province(){
        return new Province();
    }

当ioc容器中存在Country时,才会将Province注入

当没用Country时,则会报错

 

 

posted @ 2024-03-27 21:14  软工小蜗牛  阅读(8)  评论(0编辑  收藏  举报