mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Polish
This commit is contained in:
parent
344fb4616d
commit
f9aeb6aefe
@ -75,7 +75,7 @@ import org.springframework.web.servlet.DispatcherServlet;
|
||||
* different port to {@link ServerProperties} a new child context is created, otherwise it
|
||||
* is assumed that endpoint requests will be mapped and handled via an already registered
|
||||
* {@link DispatcherServlet}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Phillip Webb
|
||||
* @author Christian Dupuis
|
||||
@ -84,8 +84,8 @@ import org.springframework.web.servlet.DispatcherServlet;
|
||||
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })
|
||||
@ConditionalOnWebApplication
|
||||
@AutoConfigureAfter({ PropertyPlaceholderAutoConfiguration.class,
|
||||
EmbeddedServletContainerAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
||||
ManagementServerPropertiesAutoConfiguration.class })
|
||||
EmbeddedServletContainerAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
||||
ManagementServerPropertiesAutoConfiguration.class })
|
||||
@EnableConfigurationProperties(HealthMvcEndpointProperties.class)
|
||||
public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||
ApplicationListener<ContextRefreshedEvent> {
|
||||
@ -109,8 +109,8 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public EndpointHandlerMapping endpointHandlerMapping() {
|
||||
EndpointHandlerMapping mapping = new EndpointHandlerMapping(
|
||||
mvcEndpoints().getEndpoints());
|
||||
EndpointHandlerMapping mapping = new EndpointHandlerMapping(mvcEndpoints()
|
||||
.getEndpoints());
|
||||
boolean disabled = ManagementServerPort.get(this.applicationContext) != ManagementServerPort.SAME;
|
||||
mapping.setDisabled(disabled);
|
||||
if (!disabled) {
|
||||
@ -169,7 +169,8 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||
public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
|
||||
HealthMvcEndpoint healthMvcEndpoint = new HealthMvcEndpoint(delegate);
|
||||
if (this.healthMvcEndpointProperties.getMapping() != null) {
|
||||
healthMvcEndpoint.setStatusMapping(this.healthMvcEndpointProperties.getMapping());
|
||||
healthMvcEndpoint.setStatusMapping(this.healthMvcEndpointProperties
|
||||
.getMapping());
|
||||
}
|
||||
return healthMvcEndpoint;
|
||||
}
|
||||
@ -205,25 +206,28 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||
|
||||
// Ensure close on the parent also closes the child
|
||||
if (this.applicationContext instanceof ConfigurableApplicationContext) {
|
||||
((ConfigurableApplicationContext) this.applicationContext).addApplicationListener(new ApplicationListener<ContextClosedEvent>() {
|
||||
((ConfigurableApplicationContext) this.applicationContext)
|
||||
.addApplicationListener(new ApplicationListener<ContextClosedEvent>() {
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextClosedEvent event) {
|
||||
if (event.getApplicationContext() == EndpointWebMvcAutoConfiguration.this.applicationContext) {
|
||||
childContext.close();
|
||||
}
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onApplicationEvent(ContextClosedEvent event) {
|
||||
if (event.getApplicationContext() == EndpointWebMvcAutoConfiguration.this.applicationContext) {
|
||||
childContext.close();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
try {
|
||||
childContext.refresh();
|
||||
} catch (RuntimeException ex) {
|
||||
}
|
||||
catch (RuntimeException ex) {
|
||||
// No support currently for deploying a war with management.port=<different>,
|
||||
// and this is the signature of that happening
|
||||
if (ex instanceof EmbeddedServletContainerException
|
||||
|| ex.getCause() instanceof EmbeddedServletContainerException) {
|
||||
logger.warn("Could not start embedded container (management endpoints are still available through JMX)");
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
@ -238,14 +242,17 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
|
||||
ServerProperties serverProperties;
|
||||
try {
|
||||
serverProperties = beanFactory.getBean(ServerProperties.class);
|
||||
} catch (NoSuchBeanDefinitionException ex) {
|
||||
}
|
||||
catch (NoSuchBeanDefinitionException ex) {
|
||||
serverProperties = new ServerProperties();
|
||||
}
|
||||
|
||||
ManagementServerProperties managementServerProperties;
|
||||
try {
|
||||
managementServerProperties = beanFactory.getBean(ManagementServerProperties.class);
|
||||
} catch (NoSuchBeanDefinitionException ex) {
|
||||
managementServerProperties = beanFactory
|
||||
.getBean(ManagementServerProperties.class);
|
||||
}
|
||||
catch (NoSuchBeanDefinitionException ex) {
|
||||
managementServerProperties = new ManagementServerProperties();
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ import org.springframework.http.HttpStatus;
|
||||
|
||||
/**
|
||||
* Configuration properties for the {@link HealthMvcEndpoint}.
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
@ -48,7 +48,8 @@ public class HealthEndpoint extends AbstractEndpoint<Health> {
|
||||
|
||||
if (healthIndicators.size() == 1) {
|
||||
this.healthIndicator = healthIndicators.values().iterator().next();
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
CompositeHealthIndicator healthIndicator = new CompositeHealthIndicator(
|
||||
healthAggregator);
|
||||
for (Map.Entry<String, HealthIndicator> h : healthIndicators.entrySet()) {
|
||||
|
@ -23,7 +23,7 @@ import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* {@link HealthIndicator} that returns health indications from all registered delegates.
|
||||
*
|
||||
*
|
||||
* @author Tyler J. Frederick
|
||||
* @author Phillip Webb
|
||||
* @author Christian Dupuis
|
||||
|
@ -31,15 +31,15 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped;
|
||||
/**
|
||||
* Value object used to carry information about the health information of a component or
|
||||
* subsystem.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* {@link Health} contains a {@link Status} to express the state of a component or
|
||||
* subsystem and some additional details to carry some contextual information.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* {@link Health} has a fluent API to make it easy to construct instances. Typical usage
|
||||
* in a {@link HealthIndicator} would be:
|
||||
*
|
||||
*
|
||||
* <code>
|
||||
* Health health = new Health();
|
||||
* try {
|
||||
@ -52,7 +52,7 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped;
|
||||
* }
|
||||
* return health;
|
||||
* </code>
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
@ -21,18 +21,18 @@ import java.util.Map;
|
||||
/**
|
||||
* Strategy interface used by {@link CompositeHealthIndicator} to aggregate {@link Health}
|
||||
* instances into a final one.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* This is especially useful to combine subsystem states expressed through
|
||||
* {@link Health#getStatus()} into one state for the entire system. The default
|
||||
* implementation {@link OrderedHealthAggregator} sorts {@link Status} instances based on
|
||||
* a priority list.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* It is possible to add more complex {@link Status} types to the system. In that case
|
||||
* either the {@link OrderedHealthAggregator} needs to be properly configured or users
|
||||
* need to register a custom {@link HealthAggregator} as bean.
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
@ -18,7 +18,7 @@ package org.springframework.boot.actuate.health;
|
||||
|
||||
/**
|
||||
* Strategy interface used to provide an indication of application health.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @see VanillaHealthIndicator
|
||||
*/
|
||||
|
@ -24,7 +24,7 @@ import com.mongodb.CommandResult;
|
||||
/**
|
||||
* Simple implementation of a {@link HealthIndicator} returning status information for
|
||||
* Mongo data stores.
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
@ -26,11 +26,11 @@ import java.util.Map;
|
||||
/**
|
||||
* Default {@link HealthAggregator} implementation that aggregates {@link Health}
|
||||
* instances and determines the final system state based on a simple ordered list.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* If a different order is required or a new {@link Status} type will be used, the order
|
||||
* can be set by calling {@link #setStatusOrder(List)}.
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
@ -67,8 +67,10 @@ public class OrderedHealthAggregator implements HealthAggregator {
|
||||
@Override
|
||||
public int compare(Status s1, Status s2) {
|
||||
return Integer.valueOf(
|
||||
OrderedHealthAggregator.this.statusOrder.indexOf(s1.getCode())).compareTo(
|
||||
Integer.valueOf(OrderedHealthAggregator.this.statusOrder.indexOf(s2.getCode())));
|
||||
OrderedHealthAggregator.this.statusOrder.indexOf(s1.getCode()))
|
||||
.compareTo(
|
||||
Integer.valueOf(OrderedHealthAggregator.this.statusOrder
|
||||
.indexOf(s2.getCode())));
|
||||
|
||||
}
|
||||
});
|
||||
|
@ -27,7 +27,7 @@ import com.rabbitmq.client.Channel;
|
||||
/**
|
||||
* Simple implementation of a {@link HealthIndicator} returning status information for the
|
||||
* RabbitMQ messaging system.
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
@ -26,7 +26,7 @@ import org.springframework.util.Assert;
|
||||
/**
|
||||
* Simple implementation of a {@link HealthIndicator} returning status information for
|
||||
* Redis data stores.
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
@ -31,7 +31,7 @@ import org.springframework.util.StringUtils;
|
||||
/**
|
||||
* Simple implementation of {@link HealthIndicator} that returns a status and also
|
||||
* attempts a simple database test.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Christian Dupuis
|
||||
*/
|
||||
@ -88,7 +88,8 @@ public class SimpleDataSourceHealthIndicator implements HealthIndicator {
|
||||
}
|
||||
});
|
||||
health.withDetail("database", product);
|
||||
} catch (DataAccessException ex) {
|
||||
}
|
||||
catch (DataAccessException ex) {
|
||||
health.down().withException(ex);
|
||||
}
|
||||
String query = detectQuery(product);
|
||||
@ -96,7 +97,8 @@ public class SimpleDataSourceHealthIndicator implements HealthIndicator {
|
||||
try {
|
||||
health.withDetail("hello",
|
||||
this.jdbcTemplate.queryForObject(query, Object.class));
|
||||
} catch (Exception ex) {
|
||||
}
|
||||
catch (Exception ex) {
|
||||
health.down().withException(ex);
|
||||
}
|
||||
}
|
||||
|
@ -25,14 +25,14 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
* Value object to express state of a component or subsystem.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Status provides convenient constants for commonly used states like {@link #UP},
|
||||
* {@link #DOWN} or {@link #OUT_OF_SERVICE}.
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Custom states can also be created and used throughout the Spring Boot Health subsystem.
|
||||
*
|
||||
*
|
||||
* @author Christian Dupuis
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
@ -16,10 +16,9 @@
|
||||
|
||||
package org.springframework.boot.actuate.health;
|
||||
|
||||
|
||||
/**
|
||||
* Default implementation of {@link HealthIndicator} that simply returns {@literal "ok"}.
|
||||
*
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Christian Dupuis
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user