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")