diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricExportAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricExportAutoConfiguration.java index 427fa20b542..a6249fdf06a 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricExportAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricExportAutoConfiguration.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.actuate.endpoint.MetricsEndpointMetricReader; import org.springframework.boot.actuate.metrics.export.MetricExportProperties; import org.springframework.boot.actuate.metrics.export.MetricExporters; @@ -43,7 +44,7 @@ import org.springframework.scheduling.config.ScheduledTaskRegistrar; @Configuration @EnableScheduling @ConditionalOnProperty(value = "spring.metrics.export.enabled", matchIfMissing = true) -@EnableConfigurationProperties(MetricExportProperties.class) +@EnableConfigurationProperties public class MetricExportAutoConfiguration { @Autowired(required = false) @@ -60,6 +61,20 @@ public class MetricExportAutoConfiguration { @Autowired(required = false) private MetricsEndpointMetricReader endpointReader; + @Configuration + protected static class MetricExportPropertiesConfiguration { + @Value("spring.metrics.${random.value:0000}.${spring.application.name:application}") + private String prefix = "spring.metrics"; + + @Bean(name = "spring.metrics.export.CONFIGURATION_PROPERTIES") + @ConditionalOnMissingBean + public MetricExportProperties metricExportProperties() { + MetricExportProperties export = new MetricExportProperties(); + export.getRedis().setPrefix(prefix); + return export; + } + } + @Bean @ConditionalOnMissingBean(name = "metricWritersMetricExporter") public SchedulingConfigurer metricWritersMetricExporter() { diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricRepositoryAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricRepositoryAutoConfiguration.java index 2d6052de5c8..a16f75d3253 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricRepositoryAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricRepositoryAutoConfiguration.java @@ -26,7 +26,6 @@ import org.springframework.boot.actuate.metrics.buffer.CounterBuffers; import org.springframework.boot.actuate.metrics.buffer.GaugeBuffers; import org.springframework.boot.actuate.metrics.export.Exporter; import org.springframework.boot.actuate.metrics.export.MetricCopyExporter; -import org.springframework.boot.actuate.metrics.export.MetricExportProperties; import org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository; import org.springframework.boot.actuate.metrics.repository.MetricRepository; import org.springframework.boot.actuate.metrics.writer.DefaultCounterService; @@ -37,7 +36,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnJava; import org.springframework.boot.autoconfigure.condition.ConditionalOnJava.JavaVersion; import org.springframework.boot.autoconfigure.condition.ConditionalOnJava.Range; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.MessageChannel; @@ -81,7 +79,6 @@ import com.codahale.metrics.MetricRegistry; * @author Dave Syer */ @Configuration -@EnableConfigurationProperties(MetricExportProperties.class) public class MetricRepositoryAutoConfiguration { @Configuration diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/MetricExportProperties.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/MetricExportProperties.java index dae1d7f8546..f666ba891ed 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/MetricExportProperties.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/MetricExportProperties.java @@ -22,7 +22,6 @@ import java.util.Map.Entry; import javax.annotation.PostConstruct; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.util.PatternMatchUtils; import org.springframework.util.StringUtils; @@ -149,7 +148,6 @@ public class MetricExportProperties extends Trigger { * set spring.application.name elsewhere, then the default will be in the right * form. */ - @Value("spring.metrics.${random.value:0000}.${spring.application.name:application}") private String prefix = "spring.metrics"; /** @@ -157,7 +155,7 @@ public class MetricExportProperties extends Trigger { * system sharing a redis repository. */ private String key = "keys.spring.metrics"; - + public String getPrefix() { return prefix; } @@ -179,6 +177,7 @@ public class MetricExportProperties extends Trigger { if (tokens.length > 1) { if (StringUtils.hasText(tokens[1])) { // If the prefix has 2 or more non-trivial parts, use the first 1 + // (the aggregator strips a further 2 by default). return tokens[0]; } } diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/repository/redis/RedisMetricRepository.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/repository/redis/RedisMetricRepository.java index 5155798778d..41f09f157c8 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/repository/redis/RedisMetricRepository.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/repository/redis/RedisMetricRepository.java @@ -100,11 +100,6 @@ public class RedisMetricRepository implements MetricRepository { prefix = prefix + "."; } this.prefix = prefix; - if (!DEFAULT_METRICS_PREFIX.equals(this.prefix)) { - if (DEFAULT_KEY.equals(key)) { - key = "keys." + prefix; - } - } if (key.endsWith(".")) { key = key.substring(0, key.length() - 1); }