加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 如何理解bean是否存在于运行时?

发布时间:2020-12-15 01:23:50 所属栏目:大数据 来源:网络整理
导读:例如,我有一个班级 public class Car{ private Motor motor; public void setMotor(Motor motor){ this.motor = motor; } } 我的豆子看起来像 这个方法:motorProvider.getAvailableMotor()返回一个bean名称(字符串),我应该使用哪个电机. 但是可能存在没有创

例如,我有一个班级

public class Car{
     private Motor motor;

     public void setMotor(Motor motor){
          this.motor = motor;
     }   
}

我的豆子看起来像

这个方法:motorProvider.getAvailableMotor()返回一个bean名称(字符串),我应该使用哪个电机.

但是可能存在没有创建这样的bean(具有这样的名称)的情况.我怎么检查呢?

最佳答案
有几种模式如何做到这一点.这是我经常使用的一个:

public class Car{
     private Motor motor;

     @Autowired
     private ApplicationContext applicationContext;

     @PostConstruct
     public void init() {
        try {
            motor = applicationContext.getBean( Motor.class );
        } catch( NoSuchBeanDefinitionException e ) {
            motor = new DefaultMotor();
        }
     }
}

请注意,您也可以调用applicationContext.containsBeanDefinition(name),但这会搜索您的上下文两次(一次在containsBeanDefinition()中,然后第二次调用getBean()),因此捕获异常通常会更快.

由于我们捕获了一个说“bean不存在”的特定异常,因此使用if / else几乎没有任何优势.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读