SpringApplicationAdminMXBeanRegistrar Class — spring-boot Architecture
Architecture documentation for the SpringApplicationAdminMXBeanRegistrar class in SpringApplicationAdminMXBeanRegistrar.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/main/java/org/springframework/boot/admin/SpringApplicationAdminMXBeanRegistrar.java lines 54–156
public class SpringApplicationAdminMXBeanRegistrar implements ApplicationContextAware, GenericApplicationListener,
EnvironmentAware, InitializingBean, DisposableBean {
private static final Log logger = LogFactory.getLog(SpringApplicationAdmin.class);
@SuppressWarnings("NullAway.Init")
private ConfigurableApplicationContext applicationContext;
private Environment environment = new StandardEnvironment();
private final ObjectName objectName;
private boolean ready;
public SpringApplicationAdminMXBeanRegistrar(String name) throws MalformedObjectNameException {
this.objectName = new ObjectName(name);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
Assert.state(applicationContext instanceof ConfigurableApplicationContext,
"'applicationContext' must be a ConfigurableApplicationContext");
this.applicationContext = (ConfigurableApplicationContext) applicationContext;
}
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
@Override
public boolean supportsEventType(ResolvableType eventType) {
Class<?> type = eventType.getRawClass();
if (type == null) {
return false;
}
return ApplicationReadyEvent.class.isAssignableFrom(type);
}
@Override
public boolean supportsSourceType(@Nullable Class<?> sourceType) {
return true;
}
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ApplicationReadyEvent readyEvent) {
onApplicationReadyEvent(readyEvent);
}
}
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
}
void onApplicationReadyEvent(ApplicationReadyEvent event) {
if (this.applicationContext.equals(event.getApplicationContext())) {
this.ready = true;
}
}
@Override
public void afterPropertiesSet() throws Exception {
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
server.registerMBean(new SpringApplicationAdmin(), this.objectName);
if (logger.isDebugEnabled()) {
logger.debug("Application Admin MBean registered with name '" + this.objectName + "'");
}
}
@Override
public void destroy() throws Exception {
ManagementFactory.getPlatformMBeanServer().unregisterMBean(this.objectName);
}
private final class SpringApplicationAdmin implements SpringApplicationAdminMXBean {
@Override
public boolean isReady() {
return SpringApplicationAdminMXBeanRegistrar.this.ready;
}
@Override
public boolean isEmbeddedWebApplication() {
return SpringApplicationAdminMXBeanRegistrar.this.environment instanceof ConfigurableEnvironment configurableEnvironment
&& configurableEnvironment.getPropertySources().get("server.ports") != null;
}
@Override
public @Nullable String getProperty(String key) {
return SpringApplicationAdminMXBeanRegistrar.this.environment.getProperty(key);
}
@Override
public void shutdown() {
logger.info("Application shutdown requested.");
SpringApplicationAdminMXBeanRegistrar.this.applicationContext.close();
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free