Move cache metrics auto-configuration into spring-boot-cache

This commit is contained in:
Andy Wilkinson
2025-05-20 09:18:03 +01:00
committed by Phillip Webb
parent ff0876c001
commit 84d01cbad4
10 changed files with 24 additions and 31 deletions

View File

@@ -29,7 +29,6 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-activemq"))
optional(project(":spring-boot-project:spring-boot-artemis"))
optional(project(":spring-boot-project:spring-boot-cache"))
optional(project(":spring-boot-project:spring-boot-couchbase"))
optional(project(":spring-boot-project:spring-boot-data-cassandra"))
optional(project(":spring-boot-project:spring-boot-data-jpa"))
@@ -103,7 +102,6 @@ dependencies {
optional("io.undertow:undertow-servlet")
optional("jakarta.persistence:jakarta.persistence-api")
optional("jakarta.servlet:jakarta.servlet-api")
optional("javax.cache:cache-api")
optional("org.apache.activemq:activemq-broker")
optional("org.apache.activemq:activemq-client")
optional("org.apache.commons:commons-dbcp2")
@@ -114,8 +112,6 @@ dependencies {
optional("org.apache.tomcat.embed:tomcat-embed-el")
optional("org.apache.tomcat:tomcat-jdbc")
optional("org.aspectj:aspectjweaver")
optional("org.cache2k:cache2k-micrometer")
optional("org.cache2k:cache2k-spring")
optional("org.eclipse.jetty:jetty-server") {
exclude group: "org.eclipse.jetty.toolchain", module: "jetty-jakarta-servlet-api"
}
@@ -163,7 +159,6 @@ dependencies {
testImplementation("org.apache.activemq:artemis-jakarta-server")
testImplementation("org.apache.logging.log4j:log4j-to-slf4j")
testImplementation("org.aspectj:aspectjrt")
testImplementation("org.cache2k:cache2k-api")
testImplementation("org.eclipse.jetty.ee10:jetty-ee10-webapp")
testImplementation("org.eclipse.jetty.http2:jetty-http2-server")
testImplementation("org.glassfish.jersey.ext:jersey-spring6")
@@ -177,7 +172,6 @@ dependencies {
testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api")
testRuntimeOnly("jakarta.transaction:jakarta.transaction-api")
testRuntimeOnly("org.cache2k:cache2k-core")
testRuntimeOnly("org.opensaml:opensaml-core:4.0.1")
testRuntimeOnly("org.opensaml:opensaml-saml-api:4.0.1")
testRuntimeOnly("org.opensaml:opensaml-saml-impl:4.0.1")

View File

@@ -22,7 +22,6 @@ org.springframework.boot.actuate.autoconfigure.logging.OpenTelemetryLoggingAutoC
org.springframework.boot.actuate.autoconfigure.logging.otlp.OtlpLoggingAutoConfiguration
org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration
org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.export.appoptics.AppOpticsMetricsExportAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration

View File

@@ -34,7 +34,6 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration;
@@ -145,13 +144,13 @@ class MetricsIntegrationTests {
@Configuration(proxyBeanMethods = false)
@ImportAutoConfiguration({ MetricsAutoConfiguration.class, ObservationAutoConfiguration.class,
JvmMetricsAutoConfiguration.class, LogbackMetricsAutoConfiguration.class,
SystemMetricsAutoConfiguration.class, CacheMetricsAutoConfiguration.class,
DataSourcePoolMetricsAutoConfiguration.class, HibernateMetricsAutoConfiguration.class,
HttpClientObservationsAutoConfiguration.class, WebFluxObservationAutoConfiguration.class,
WebMvcObservationAutoConfiguration.class, JacksonAutoConfiguration.class,
HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class,
WebMvcAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
TomcatServletWebServerAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class })
SystemMetricsAutoConfiguration.class, DataSourcePoolMetricsAutoConfiguration.class,
HibernateMetricsAutoConfiguration.class, HttpClientObservationsAutoConfiguration.class,
WebFluxObservationAutoConfiguration.class, WebMvcObservationAutoConfiguration.class,
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
RestTemplateAutoConfiguration.class, WebMvcAutoConfiguration.class,
DispatcherServletAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
TomcatServletWebServerAutoConfiguration.class })
@Import(PersonController.class)
static class MetricsApp {

View File

@@ -19,6 +19,7 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-data-redis"))
optional(project(":spring-boot-project:spring-boot-hazelcast"))
optional(project(":spring-boot-project:spring-boot-jpa"))
optional(project(":spring-boot-project:spring-boot-metrics"))
optional("com.hazelcast:hazelcast-spring")
optional("io.micrometer:micrometer-core")
optional("javax.cache:cache-api")

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.actuate.autoconfigure.metrics.cache;
package org.springframework.boot.cache.actuate.metrics.autoconfigure;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.spring.cache.HazelcastCache;

View File

@@ -14,15 +14,15 @@
* limitations under the License.
*/
package org.springframework.boot.actuate.autoconfigure.metrics.cache;
package org.springframework.boot.cache.actuate.metrics.autoconfigure;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.cache.actuate.metrics.CacheMetricsRegistrar;
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
import org.springframework.boot.cache.autoconfigure.CacheAutoConfiguration;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Import;
@@ -32,12 +32,12 @@ import org.springframework.context.annotation.Import;
* {@link Cache caches}.
*
* @author Stephane Nicoll
* @since 2.0.0
* @since 4.0.0
*/
@AutoConfiguration(after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class },
afterName = "org.springframework.boot.cache.autoconfigure.CacheAutoConfiguration")
@AutoConfiguration(after = { CacheAutoConfiguration.class },
afterName = "org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration")
@ConditionalOnBean(CacheManager.class)
@ConditionalOnClass(CacheMetricsRegistrar.class)
@ConditionalOnClass(MeterRegistry.class)
@Import({ CacheMeterBinderProvidersConfiguration.class, CacheMetricsRegistrarConfiguration.class })
public class CacheMetricsAutoConfiguration {

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.actuate.autoconfigure.metrics.cache;
package org.springframework.boot.cache.actuate.metrics.autoconfigure;
import java.util.Collection;
import java.util.Map;

View File

@@ -17,4 +17,4 @@
/**
* Auto-configuration for cache metrics.
*/
package org.springframework.boot.actuate.autoconfigure.metrics.cache;
package org.springframework.boot.cache.actuate.metrics.autoconfigure;

View File

@@ -1,2 +1,3 @@
org.springframework.boot.cache.actuate.endpoint.autoconfigure.CachesEndpointAutoConfiguration
org.springframework.boot.cache.actuate.metrics.autoconfigure.CacheMetricsAutoConfiguration
org.springframework.boot.cache.autoconfigure.CacheAutoConfiguration

View File

@@ -21,13 +21,12 @@ import java.util.List;
import com.github.benmanes.caffeine.cache.CaffeineSpec;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener;
import org.springframework.boot.cache.actuate.metrics.autoconfigure.CacheMetricsAutoConfiguration;
import org.springframework.boot.cache.autoconfigure.CacheAutoConfiguration;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurer;
@@ -46,14 +45,14 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class CacheMetricsAutoConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().with(MetricsRun.simple())
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withBean(SimpleMeterRegistry.class)
.withUserConfiguration(CachingConfiguration.class)
.withConfiguration(AutoConfigurations.of(CacheAutoConfiguration.class, CacheMetricsAutoConfiguration.class));
@Test
void autoConfiguredCache2kIsInstrumented() {
this.contextRunner.withPropertyValues("spring.cache.type=cache2k", "spring.cache.cache-names=cache1,cache2")
.withInitializer(ConditionEvaluationReportLoggingListener.forLogLevel(LogLevel.INFO))
.run((context) -> {
MeterRegistry registry = context.getBean(MeterRegistry.class);
registry.get("cache.gets").tags("name", "cache1").tags("cache.manager", "cacheManager").meter();