我在测试和部署过程中遇到了一系列奇怪的错误。它们似乎表明我的一些bean没有加载到上下文中,尽管它们在applicationContext.xml中被定义。
在测试期间有没有办法检查哪些bean实际上已经被加载了?或者找到运行时加载的完整bean列表?
谢谢, b
我在测试和部署过程中遇到了一系列奇怪的错误。它们似乎表明我的一些bean没有加载到上下文中,尽管它们在applicationContext.xml中被定义。
在测试期间有没有办法检查哪些bean实际上已经被加载了?或者找到运行时加载的完整bean列表?
谢谢, b
在启动时,Spring会以info级别记录上下文中加载的所有bean的名称。或者在代码中,您可以使用getBeanDefinitionNames()
方法获取所有bean的名称。
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()
查询其所有bean。
@Autowired
private StatusTestsApplicationListener listener;