Java 使用SpringFactorybean模式-无bean返回空值?

Java 使用SpringFactorybean模式-无bean返回空值?,java,spring,design-patterns,Java,Spring,Design Patterns,我在SPRING中使用Factory模式,如本例所示 如果没有具有特定名称的bean 我得到异常org.springframework.beans.factory.NoSuchBean定义异常 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'XXX' is defined at org.springframework.beans.factory.support.Default

我在SPRING中使用Factory模式,如本例所示

如果没有具有特定名称的bean 我得到异常org.springframework.beans.factory.NoSuchBean定义异常

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'XXX' is defined
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:549)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.config.ServiceLocatorFactoryBean$ServiceLocatorInvocationHandler.invokeServiceLocatorMethod(ServiceLocatorFactoryBean.java:367)
    at org.springframework.beans.factory.config.ServiceLocatorFactoryBean$ServiceLocatorInvocationHandler.invoke(ServiceLocatorFactoryBean.java:356)
    at com.sun.proxy.$Proxy24.createManualDepositProcess(Unknown Source)
如果我试图获取未定义的bean,比如printStrategyFactory.getStrategy(“NO_DEF”).print(doc),我会得到异常

在没有bean的情况下是否可能返回null?
谢谢大家!

如果您是像您发布的示例中那样进行自动连线,
@Autowired(required=false)
应该可以做到这一点


编辑:很抱歉一开始把你的问题弄错了,我刚刚在测试你发布的链接时发现了
@Autowired
注释,并想到了标准解决方案。

错误在于我想得到的bean不是像printStrategyFactory.getStrategy(“NO_DEF”).print(doc);但这意味着您无论如何都会得到一个NullPointerException,如果即使返回null也无法加载此策略的bean,对吗?在这种情况下如何防止异常?printa4landscapestrategybean=printStrategyFactory.getStrategy(“NO_DEF”);您可以决定返回null。在工厂方法中使用try/catch捕获Spring的异常。我可以覆盖返回函数吗?不,我在示例中看到您引用了使用Spring的
ServiceLocatoryFactoryBean
。虽然可以更改引发的异常,但无法更改查找失败时引发异常的行为。您需要用try/catch来包围调用查找的代码。