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时,则会报错