Spring Boot基于特定条件创建Bean例子 : ConditionalOnBean

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

结合使用注解@ConditionalOnClass和@Bean,可以做到只有特定名称或者类型的Bean存在于BeanFactory时才创建某个Bean :

    @Configuration public class ConditionalOnBeanConfig { @Bean public A beanA(){ return new A(); // 创建一个Bean,名称是 beanA,不需要满足什么前置条件, } @Bean @ConditionalOnBean(name="beanA") public B beanB(){ // 仅在beanFactory存在一个名称叫做beanA的bean时,当前方法初始化一个名字为beanB的bean。 return new B(); } @Bean @ConditionalOnBean public C beanC(){ //如果beanFactory不存在一个类型为C的bean,则不创建该bean。 // 如果当前项目仅有这一个 bean 配置文件,则因为 beanFactory 中不存在一个类型为C的 bean ,所以当前 // 方法定义的名称为 beanC 的 bean 并不会被初始化。 return new C(); } @Bean public SimpleInt beanAInt(){ // 创建一个类型为 SimpleInt 的 bean ,其实现类使用 ASimpleInt return new ASimpleInt(); } @Bean @ConditionalOnBean public SimpleInt beanBInt(){ // 仅在 beanFactory 中存在一个类型为 SimpleInt 的 bean 时才初始化一个类型同样 为 SimpleInt  // 的 bean ,bean 名称为 beanBInt return new BSimpleInt(); } } 

ConditionalOnBean 注解条件匹配所检查的bean定义仅限于spring boot 执行过程中application context截至当前所处理的那些bean,因此,强烈建议仅将 ConditionalOnBean 使用于 auto-configuration 类。另外,如果一个候选 bean 需要在另外一个 auto-configuration 完成之后创建(或者不创建),那么需要确保该 ConditionalOnBean 在那个 auto-configuration 完成之后执行。

注解 ConditionalOnBean 的官方API文档

参考文章 : Conditional Beans Creation In Spring Boot


来源:http://ddrv.cn

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » Spring Boot基于特定条件创建Bean例子 : ConditionalOnBean

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏