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几乎没有任何优势.
原文地址:https://www.jb51.cc/spring/431908.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。