2015-08-03 19 views
5

Sto provando a creare una fabbrica di oggetti, che verificherà innanzitutto se un bean è stato definito in modo specifico nel contesto di primavera. Se tale bean non viene trovato, cercherà altri modi per creare l'istanza.C'è un modo per verificare se un bean è definito nel contesto di primavera?

Ho implementato utilizzando il seguente codice

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

Si sta lavorando, tuttavia un oggetto eccezione viene creato quando il bean non è disponibile in Context Spring.

C'è un modo per evitare questo? o in altre parole C'è un modo per verificare se un bean è definito nel contesto di primavera?

risposta

8

Prova questa:

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

c'è un modo per convalidare lo stesso in XML? – Sridhar

0

beanFactory.containsBean(w.getName()) restituirà un valore boolean a seconda se c'è già un fagiolo registrato con questo nome. Dai uno sguardo allo here.

fare qualcosa di simile

if (!((BeanFactory) applicationContext).containsBean(w.getName())) { 
    component = loadFromDB(w, page); 
} 
Problemi correlati