public class LiveBeansView extends Object implements LiveBeansViewMBean, ApplicationContextAware
ApplicationContext
(with a
local LiveBeansView
bean definition) or all registered ApplicationContexts
(driven by the "spring.liveBeansView.mbeanDomain" environment property).
Note: This feature is still in beta and primarily designed for use with Spring Tool Suite 3.1 and higher.
getSnapshotAsJson()
,
LiveBeansViewServlet
Modifier and Type | Field and Description |
---|---|
static String |
MBEAN_APPLICATION_KEY |
static String |
MBEAN_DOMAIN_PROPERTY_NAME |
Constructor and Description |
---|
LiveBeansView() |
Modifier and Type | Method and Description |
---|---|
protected Set<ConfigurableApplicationContext> |
findApplicationContexts()
Find all applicable ApplicationContexts for the current application.
|
protected String |
generateJson(Set<ConfigurableApplicationContext> contexts)
Actually generate a JSON snapshot of the beans in the given ApplicationContexts.
|
protected String |
getEscapedResourceDescription(BeanDefinition bd)
Determine a resource description for the given bean definition and
apply basic JSON escaping (backslashes, double quotes) to it.
|
String |
getSnapshotAsJson()
Generate a JSON snapshot of current beans and their dependencies,
finding all active ApplicationContexts through
findApplicationContexts() ,
then delegating to generateJson(java.util.Set) . |
protected boolean |
isBeanEligible(String beanName,
BeanDefinition bd,
ConfigurableBeanFactory bf)
Determine whether the specified bean is eligible for inclusion in the
LiveBeansView JSON snapshot.
|
void |
setApplicationContext(ApplicationContext applicationContext)
Set the ApplicationContext that this object runs in.
|
public static final String MBEAN_DOMAIN_PROPERTY_NAME
public static final String MBEAN_APPLICATION_KEY
public void setApplicationContext(ApplicationContext applicationContext)
ApplicationContextAware
Invoked after population of normal bean properties but before an init callback such
as InitializingBean.afterPropertiesSet()
or a custom init-method. Invoked after ResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader)
,
ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
and
MessageSourceAware
, if applicable.
setApplicationContext
in interface ApplicationContextAware
applicationContext
- the ApplicationContext object to be used by this objectBeanInitializationException
public String getSnapshotAsJson()
findApplicationContexts()
,
then delegating to generateJson(java.util.Set)
.getSnapshotAsJson
in interface LiveBeansViewMBean
protected Set<ConfigurableApplicationContext> findApplicationContexts()
Called if no specific ApplicationContext has been set for this LiveBeansView.
protected String generateJson(Set<ConfigurableApplicationContext> contexts)
This implementation doesn't use any JSON parsing libraries in order to avoid third-party library dependencies. It produces an array of context description objects, each containing a context and parent attribute as well as a beans attribute with nested bean description objects. Each bean object contains a bean, scope, type and resource attribute, as well as a dependencies attribute with a nested array of bean names that the present bean depends on.
contexts
- the set of ApplicationContextsprotected boolean isBeanEligible(String beanName, BeanDefinition bd, ConfigurableBeanFactory bf)
beanName
- the name of the beanbd
- the corresponding bean definitionbf
- the containing bean factorytrue
if the bean is to be included; false
otherwise@Nullable protected String getEscapedResourceDescription(BeanDefinition bd)
bd
- the bean definition to build the resource description for