Remove autowired injection of HealthIndicators into HealthEndpoint

Moved into EndpointAutoConfiguration
This commit is contained in:
Christian Dupuis 2014-05-19 15:43:29 +02:00
parent 7ab78d1d0f
commit fef998f914
4 changed files with 19 additions and 11 deletions

View File

@ -16,6 +16,7 @@
package org.springframework.boot.actuate.autoconfigure; package org.springframework.boot.actuate.autoconfigure;
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
@ -36,6 +37,7 @@ import org.springframework.boot.actuate.endpoint.RequestMappingEndpoint;
import org.springframework.boot.actuate.endpoint.ShutdownEndpoint; import org.springframework.boot.actuate.endpoint.ShutdownEndpoint;
import org.springframework.boot.actuate.endpoint.TraceEndpoint; import org.springframework.boot.actuate.endpoint.TraceEndpoint;
import org.springframework.boot.actuate.endpoint.VanillaPublicMetrics; import org.springframework.boot.actuate.endpoint.VanillaPublicMetrics;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.metrics.reader.MetricReader; import org.springframework.boot.actuate.metrics.reader.MetricReader;
import org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository; import org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository;
import org.springframework.boot.actuate.trace.InMemoryTraceRepository; import org.springframework.boot.actuate.trace.InMemoryTraceRepository;
@ -59,7 +61,7 @@ import org.springframework.web.servlet.handler.AbstractHandlerMethodMapping;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} for common management * {@link EnableAutoConfiguration Auto-configuration} for common management
* {@link Endpoint}s. * {@link Endpoint}s.
* *
* @author Dave Syer * @author Dave Syer
* @author Phillip Webb * @author Phillip Webb
* @author Greg Turnquist * @author Greg Turnquist
@ -71,6 +73,9 @@ public class EndpointAutoConfiguration {
@Autowired @Autowired
private InfoPropertiesConfiguration properties; private InfoPropertiesConfiguration properties;
@Autowired(required = false)
Map<String, HealthIndicator<? extends Object>> healthIndicators = new HashMap<String, HealthIndicator<? extends Object>>();
@Autowired(required = false) @Autowired(required = false)
private MetricReader metricRepository = new InMemoryMetricRepository(); private MetricReader metricRepository = new InMemoryMetricRepository();
@ -92,7 +97,7 @@ public class EndpointAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public HealthEndpoint healthEndpoint() { public HealthEndpoint healthEndpoint() {
return new HealthEndpoint(); return new HealthEndpoint(this.healthIndicators);
} }
@Bean @Bean

View File

@ -30,6 +30,7 @@ import org.springframework.boot.actuate.health.RedisHealthIndicator;
import org.springframework.boot.actuate.health.SimpleDataSourceHealthIndicator; import org.springframework.boot.actuate.health.SimpleDataSourceHealthIndicator;
import org.springframework.boot.actuate.health.VanillaHealthIndicator; import org.springframework.boot.actuate.health.VanillaHealthIndicator;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@ -45,11 +46,12 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} for {@link HealthIndicator}s. * {@link EnableAutoConfiguration Auto-configuration} for {@link HealthIndicator}s.
* *
* @author Christian Dupuis * @author Christian Dupuis
* @since 1.1.0 * @since 1.1.0
*/ */
@Configuration @Configuration
@AutoConfigureBefore({ EndpointAutoConfiguration.class })
@AutoConfigureAfter({ DataSourceAutoConfiguration.class, MongoAutoConfiguration.class, @AutoConfigureAfter({ DataSourceAutoConfiguration.class, MongoAutoConfiguration.class,
MongoDataAutoConfiguration.class, RedisAutoConfiguration.class, MongoDataAutoConfiguration.class, RedisAutoConfiguration.class,
RabbitAutoConfiguration.class }) RabbitAutoConfiguration.class })

View File

@ -20,27 +20,28 @@ import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.util.Assert;
/** /**
* {@link Endpoint} to expose application health. * {@link Endpoint} to expose application health.
* *
* @author Dave Syer * @author Dave Syer
* @author Christian Dupuis * @author Christian Dupuis
*/ */
@ConfigurationProperties(prefix = "endpoints.health", ignoreUnknownFields = false) @ConfigurationProperties(prefix = "endpoints.health", ignoreUnknownFields = false)
public class HealthEndpoint extends AbstractEndpoint<Map<String, Object>> { public class HealthEndpoint extends AbstractEndpoint<Map<String, Object>> {
@Autowired(required = false) private final Map<String, HealthIndicator<? extends Object>> healthIndicators;
private Map<String, HealthIndicator<? extends Object>> healthIndicators;
/** /**
* Create a new {@link HealthIndicator} instance. * Create a new {@link HealthIndicator} instance.
*/ */
public HealthEndpoint() { public HealthEndpoint(Map<String, HealthIndicator<? extends Object>> healthIndicators) {
super("health", false, true); super("health", false, true);
Assert.notNull(healthIndicators, "HealthIndicator must not be null");
this.healthIndicators = healthIndicators;
} }
/** /**

View File

@ -30,7 +30,7 @@ import static org.junit.Assert.assertThat;
/** /**
* Tests for {@link HealthEndpoint}. * Tests for {@link HealthEndpoint}.
* *
* @author Phillip Webb * @author Phillip Webb
*/ */
public class HealthEndpointTests extends AbstractEndpointTests<HealthEndpoint> { public class HealthEndpointTests extends AbstractEndpointTests<HealthEndpoint> {
@ -51,8 +51,8 @@ public class HealthEndpointTests extends AbstractEndpointTests<HealthEndpoint> {
public static class Config { public static class Config {
@Bean @Bean
public HealthEndpoint endpoint() { public HealthEndpoint endpoint(Map<String, HealthIndicator<?>> healthIndicators) {
return new HealthEndpoint(); return new HealthEndpoint(healthIndicators);
} }
@Bean @Bean