diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/HikariDataSourceMetricsPostProcessor.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/HikariDataSourceMetricsPostProcessor.java index 89f3d6e5f8..87278712e8 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/HikariDataSourceMetricsPostProcessor.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/HikariDataSourceMetricsPostProcessor.java @@ -59,17 +59,15 @@ class HikariDataSourceMetricsPostProcessor implements BeanPostProcessor, Ordered } private HikariDataSource determineHikariDataSource(Object bean) { - if (!(bean instanceof DataSource)) { - return null; + if (bean instanceof DataSource) { + return DataSourceUnwrapper.unwrap((DataSource) bean, HikariDataSource.class); } - DataSource dataSource = (DataSource) bean; - return DataSourceUnwrapper.unwrap(dataSource, HikariDataSource.class); + return null; } private void bindMetricsRegistryToHikariDataSource(MeterRegistry registry, HikariDataSource dataSource) { - if (dataSource.getMetricRegistry() == null - && dataSource.getMetricsTrackerFactory() == null) { + if (!hasExisingMetrics(dataSource)) { try { dataSource.setMetricsTrackerFactory( new MicrometerMetricsTrackerFactory(registry)); @@ -80,6 +78,11 @@ class HikariDataSourceMetricsPostProcessor implements BeanPostProcessor, Ordered } } + private boolean hasExisingMetrics(HikariDataSource dataSource) { + return dataSource.getMetricRegistry() != null + || dataSource.getMetricsTrackerFactory() != null; + } + private MeterRegistry getMeterRegistry() { if (this.meterRegistry == null) { this.meterRegistry = this.context.getBean(MeterRegistry.class); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.java index 2c6aef8002..5fd587de80 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.java @@ -105,6 +105,9 @@ public class WebMvcMetricsAutoConfiguration { return new MetricsWebMvcConfigurer(meterRegistry, tagsProvider); } + /** + * {@link WebMvcConfigurer} to add metrics interceptors. + */ static class MetricsWebMvcConfigurer implements WebMvcConfigurer { private final MeterRegistry meterRegistry; diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jersey/JerseyAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jersey/JerseyAutoConfiguration.java index f3cf0bab3b..9babf78763 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jersey/JerseyAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jersey/JerseyAutoConfiguration.java @@ -109,16 +109,6 @@ public class JerseyAutoConfiguration implements ServletContextAware { customize(); } - private String resolveApplicationPath() { - if (StringUtils.hasLength(this.jersey.getApplicationPath())) { - return this.jersey.getApplicationPath(); - } - else { - return findApplicationPath(AnnotationUtils.findAnnotation( - this.config.getApplication().getClass(), ApplicationPath.class)); - } - } - private void customize() { if (this.customizers != null) { AnnotationAwareOrderComparator.sort(this.customizers); @@ -134,6 +124,14 @@ public class JerseyAutoConfiguration implements ServletContextAware { return this::resolveApplicationPath; } + private String resolveApplicationPath() { + if (StringUtils.hasLength(this.jersey.getApplicationPath())) { + return this.jersey.getApplicationPath(); + } + return findApplicationPath(AnnotationUtils.findAnnotation( + this.config.getApplication().getClass(), ApplicationPath.class)); + } + @Bean @ConditionalOnMissingBean public FilterRegistrationBean requestContextFilter() {