gpt4 book ai didi

java - 我如何了解运行时是否存在 bean?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:04 24 4
gpt4 key购买 nike

比如我有一个类

public class Car{
private Motor motor;

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

我的 bean 看起来像

<bean id="car" class="Car">
<property name="motor" ref="${motorProvider.getAvailableMotor()}"/>
</bean>

此方法: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 几乎没有优势了。

关于java - 我如何了解运行时是否存在 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com