2013-03-09 8 views
6

Mam szereg nieparzystych błędów w testowaniu i wdrażaniu. Wydają się wskazywać, że niektóre moje komponenty bean nie ładują się do kontekstu, mimo że są zdefiniowane w pliku applicationContext.xml.Sprawdź, które ziarna załadowano w kontekście sprężyny

Czy istnieje sposób sprawdzenia podczas testowania, które ziarna zostały załadowane? Lub znaleźć pełną listę fasoli załadowanych w czasie wykonywania?

Dzięki, b

Odpowiedz

4

Przy uruchamianiu, kłody Wiosna na poziomie informacyjnym nazwy wszystkich ziaren ładowany przez kontekst. Lub w kodzie, można użyć getBeanDefinitionNames(), aby uzyskać wszystkie nazwy fasoli.

+0

Podejrzewałem, że to będzie łatwe, off aby spróbować i DZIĘKI! –

+1

To było przydatne i test dla tych, którzy tego potrzebują: '@' Autowired ApplicationContext applicationContext; '@' Test public void testContext() { String [] beans = applicationContext.getBeanDefinitionNames(); dla (String b: beans) { System.out.println ("***" + b); } } –

0

jeśli jest więcej niż jeden kontekst, jeśli używasz sprężynowego mvc, możesz użyć czegoś tak potężnego.

public class SampleContextApplicationListener implements ApplicationListener<ApplicationContextEvent> { 

    private Map<String,ApplicationContext> contextMap = new Hashtable<String,ApplicationContext>(); 

    @Override 
    public void onApplicationEvent(ApplicationContextEvent event) { 
     if(event instanceof ContextStartedEvent || event instanceof ContextRefreshedEvent){ 
      this.getContextMap().put(event.getApplicationContext().getDisplayName(), event.getApplicationContext()); 
     } 

    } 

    public Map<String,ApplicationContext> getContextMap() { 
     return contextMap; 
    } 
} 

Następnie można wprowadzić słuchacza, gdzie jest ona potrzebna, a ekstrakt mapę contextens a następnie interogate go dla wszystkich jego fasoli, używając getBeanDefinitionNames()

@Autowired 
private StatusTestsApplicationListener listener; 
+0

Dzięki @ams Nie jestem pewien jak tego jeszcze użyć. –

Powiązane problemy