Mar*_*llo 7 java spring javabeans
例如,我有一个班级
public class Car{
private Motor motor;
public void setMotor(Motor motor){
this.motor = motor;
}
}
Run Code Online (Sandbox Code Playgroud)
我的豆子看起来像
<bean id="car" class="Car">
<property name="motor" ref="${motorProvider.getAvailableMotor()}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
这个方法: motorProvider.getAvailableMotor()返回一个bean名称(字符串),我应该使用哪个电机.
但是可能存在这样的情况:没有创建这样的bean(具有这样的名称).我怎么检查呢?
Aar*_*lla 16
有几种模式如何做到这一点.这是我经常使用的一个:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您也可以调用,applicationContext.containsBeanDefinition(name)但这会搜索您的上下文两次(一次进入containsBeanDefinition(),然后第二次调用时getBean()),因此捕获异常通常会更快.
由于我们捕获了一个特定的异常,说"bean不存在",因此使用if/ else几乎没有任何优势.
| 归档时间: |
|
| 查看次数: |
9809 次 |
| 最近记录: |