使用Spring Factory bean模式 - 没有bean返回null?

时间:2013-12-11 12:42:29

标签: java spring design-patterns

我在SPRING中使用Factory模式,就像在这个例子中一样 http://kh-yiu.blogspot.co.il/2013/04/spring-implementing-factory-pattern.html

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

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? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果您在发布的示例中进行自动装配,@Autowired(required=false)应该可以解决问题。

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