OQL 查询以查找包含特定 bean 的 Spring ApplicationContext



我使用 Spring Boot 并且 bean 实例化有问题(他们创建了两次(。

如何从 OQL 查询中的 Bean 引用中找到对应用程序上下文的引用?换句话说,找出为给定的豆子持有上下文。

附言可视化虚拟机中的基本故障排除查询:

heap.objects("org.springframework.context.support.AbstractApplicationContext")
heap.objects("org.springframework.core.io.DefaultResourceLoader")

按 Bean 名称查找每个ApplicationContext的 bean 实例 ::

map(heap.objects("org.springframework.context.support.AbstractApplicationContext"), function(it) {
  var fact = it.beanFactory;
  var tbl = fact.singletonObjects.table;
  var beans = map(filter(tbl, "it && /Step$/.test(it.key)"), "{key: it.key, val: it.val}");
  return {ctx: it, beans: beans};
})

按类名查找每个ApplicationContext的 bean 实例 ::

map(heap.objects("org.springframework.context.support.AbstractApplicationContext"), function(it) {
  var fact = it.beanFactory;
  var tbl = fact.singletonObjects.table;
  var beans = map(filter(tbl, "it && /^com.bigbrother/.test(classof(it.val).name)"), "{key: it.key, val: it.val}");
  return {ctx: it, beans: beans};
})

如果 Spring 更改了底层实现,则应调整这些查询。查找字段:

heap.objects("org.springframework.context.support.AbstractApplicationContext")

相关内容

  • 没有找到相关文章

最新更新