テストと展開で一連の奇妙なエラーが発生しています。それらは、applicationContext.xmlで定義されているにもかかわらず、一部のBeanがコンテキストにロードされていないことを示しているようです。
テスト中に実際にロードされたBeanを確認する方法はありますか?または、実行時にロードされるBeanの完全なリストを見つけるには?
ありがとう、b
テストと展開で一連の奇妙なエラーが発生しています。それらは、applicationContext.xmlで定義されているにもかかわらず、一部のBeanがコンテキストにロードされていないことを示しているようです。
テスト中に実際にロードされたBeanを確認する方法はありますか?または、実行時にロードされるBeanの完全なリストを見つけるには?
ありがとう、b
起動時に、SpringはコンテキストによってロードされているすべてのBeanの名前を情報レベルでログに記録します。または、コードでは、getBeanDefinitionNames()
すべてのBean名を取得するために使用できます。
複数のコンテキストがある場合は、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;