OQL-запрос, чтобы найти Spring ApplicationContext, содержащий конкретный бин

Я использую Spring Boot и имею проблемы с созданием экземпляров bean-компонентов (они созданы дважды).

Как найти ссылку на ApplicationContext из ссылки на компонент в запросе OQL? Другими словами, узнайте, как держать Контекст для данного компонента.

PS Основной вопрос по устранению неполадок в VisualVM:

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

1 ответ

Найти экземпляры бобов по имени бина ApplicationContext::

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::

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")
Другие вопросы по тегам