我在测试和部署中遇到了一系列奇怪的错误。它们似乎表明我的一些 bean 没有加载到上下文中,尽管它们是在 applicationContext.xml 中定义的。
有没有办法在测试期间检查实际加载了哪些 bean?还是要查找在运行时加载的完整 bean 列表?
谢谢,乙
我在测试和部署中遇到了一系列奇怪的错误。它们似乎表明我的一些 bean 没有加载到上下文中,尽管它们是在 applicationContext.xml 中定义的。
有没有办法在测试期间检查实际加载了哪些 bean?还是要查找在运行时加载的完整 bean 列表?
谢谢,乙
在启动时,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;