2015-08-03 91 views
5

我想创建一个对象工厂,它将首先检查一个bean是否已经在spring上下文中专门定义。如果没有找到这样的bean,它将检查其他方式来创建实例。有没有办法来检查bean是否在spring上下文中定义?

我曾尝试使用下面的代码

try { 
     component = (PageComponent) appContext.getBean(w.getName()); 
    } catch (org.springframework.beans.factory.NoSuchBeanDefinitionException e) { 
      component = loadFromDB(w, page); 
    } 

这是工作,但每当黄豆是不是在Spring上下文可创建一个异常对象实现了它。

有没有办法避免这种情况?或换句话说有没有办法来检查一个bean是否在spring上下文中定义?

回答

8

试试这个:

if(appContext.containsBeanDefinition(w.getName())) 
    ; // Get the bean 
+1

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/support/AbstractBeanFactory.html#containsBeanDefinition- java.lang.String- –

+0

有没有一种方法来验证XML中的相同? – Sridhar

0

beanFactory.containsBean(w.getName())将返回boolean值取决于是否有已经被这个名字注册的bean。看看here

做这样的事情

if (!((BeanFactory) applicationContext).containsBean(w.getName())) { 
    component = loadFromDB(w, page); 
} 
相关问题