Class LiveBeansView
- java.lang.Object
- org.springframework.context.support.LiveBeansView
- All Implemented Interfaces:
Aware
,ApplicationContextAware
,LiveBeansViewMBean
- Direct Known Subclasses:
ServletContextLiveBeansView
public class LiveBeansView extends Object implements LiveBeansViewMBean, ApplicationContextAware
Adapter for live beans view exposure, building a snapshot of current beans and their dependencies from either a localApplicationContext
(with a localLiveBeansView
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.
- Since:
- 3.2
- Author:
- Juergen Hoeller, Stephane Nicoll
- See Also:
getSnapshotAsJson()
,LiveBeansViewServlet
Field Summary
Fields Modifier and Type Field Description static String
MBEAN_APPLICATION_KEY
static String
MBEAN_DOMAIN_PROPERTY_NAME
Constructor Summary
Constructors Constructor Description LiveBeansView()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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 throughfindApplicationContexts()
, then delegating togenerateJson(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.
Field Detail
MBEAN_DOMAIN_PROPERTY_NAME
public static final String MBEAN_DOMAIN_PROPERTY_NAME
- See Also:
- Constant Field Values
MBEAN_APPLICATION_KEY
public static final String MBEAN_APPLICATION_KEY
- See Also:
- Constant Field Values
Constructor Detail
LiveBeansView
public LiveBeansView()
Method Detail
setApplicationContext
public void setApplicationContext(ApplicationContext applicationContext)
Description copied from interface:ApplicationContextAware
Set the ApplicationContext that this object runs in. Normally this call will be used to initialize the object.Invoked after population of normal bean properties but before an init callback such as
InitializingBean.afterPropertiesSet()
or a custom init-method. Invoked afterResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader)
,ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
andMessageSourceAware
, if applicable.- Specified by:
setApplicationContext
in interfaceApplicationContextAware
- Parameters:
applicationContext
- the ApplicationContext object to be used by this object- See Also:
BeanInitializationException
getSnapshotAsJson
public String getSnapshotAsJson()
Generate a JSON snapshot of current beans and their dependencies, finding all active ApplicationContexts throughfindApplicationContexts()
, then delegating togenerateJson(java.util.Set)
.- Specified by:
getSnapshotAsJson
in interfaceLiveBeansViewMBean
findApplicationContexts
protected Set<ConfigurableApplicationContext> findApplicationContexts()
Find all applicable ApplicationContexts for the current application.Called if no specific ApplicationContext has been set for this LiveBeansView.
- Returns:
- the set of ApplicationContexts
generateJson
protected String generateJson(Set<ConfigurableApplicationContext> contexts)
Actually generate a JSON snapshot of the beans in the given ApplicationContexts.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.
- Parameters:
contexts
- the set of ApplicationContexts- Returns:
- the JSON document
isBeanEligible
protected boolean isBeanEligible(String beanName, BeanDefinition bd, ConfigurableBeanFactory bf)
Determine whether the specified bean is eligible for inclusion in the LiveBeansView JSON snapshot.- Parameters:
beanName
- the name of the beanbd
- the corresponding bean definitionbf
- the containing bean factory- Returns:
true
if the bean is to be included;false
otherwise
getEscapedResourceDescription
protected String getEscapedResourceDescription(BeanDefinition bd)
Determine a resource description for the given bean definition and apply basic JSON escaping (backslashes, double quotes) to it.- Parameters:
bd
- the bean definition to build the resource description for- Returns:
- the JSON-escaped resource description