我在测试和部署中遇到了一系列奇怪的错误。它们似乎表明我的一些bean没有加载到上下文中,尽管它们是在applicationContext.xml中定义的。
在测试过程中是否有任何方法可以检查实际加载了哪些bean?或者查找运行时加载的bean的完整列表?
谢谢, B'/ P>
答案 0 :(得分:6)
在启动时,Spring在信息级别记录上下文加载的所有bean的名称。或者在代码中,您可以使用getBeanDefinitionNames()
来获取所有bean名称。
答案 1 :(得分: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;