8

テストと展開で一連の奇妙なエラーが発生しています。それらは、applicationContext.xmlで定義されているにもかかわらず、一部のBeanがコンテキストにロードされていないことを示しているようです。

テスト中に実際にロードされたBeanを確認する方法はありますか?または、実行時にロードされるBeanの完全なリストを見つけるには?

ありがとう、b

4

2 に答える 2

6

起動時に、SpringはコンテキストによってロードされているすべてのBeanの名前を情報レベルでログに記録します。または、コードでは、getBeanDefinitionNames()すべてのBean名を取得するために使用できます。

于 2013-03-09T05:15:24.677 に答える
0

複数のコンテキストがある場合は、Spring MVCを使用している場合は、このようなより強力なものを使用できます。

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;
    }   
}

次に、リスナーを必要な場所に挿入し、コンテキストのマップを抽出してから、getBeanDefinitionNames()

@Autowired
private StatusTestsApplicationListener listener;
于 2013-03-09T15:52:55.207 に答える