Move MongoDB metrics auto-configuration into spring-boot-mongodb

See gh-46114
This commit is contained in:
Andy Wilkinson 2025-05-20 11:04:13 +01:00
parent 864ab740e5
commit fc2a605295
7 changed files with 20 additions and 23 deletions

View File

@ -59,7 +59,6 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-jsonb"))
optional(project(":spring-boot-project:spring-boot-kafka"))
optional(project(":spring-boot-project:spring-boot-metrics"))
optional(project(":spring-boot-project:spring-boot-mongodb"))
optional(project(":spring-boot-project:spring-boot-r2dbc"))
optional(project(":spring-boot-project:spring-boot-reactor-netty"))
optional(project(":spring-boot-project:spring-boot-restclient"))
@ -147,7 +146,6 @@ dependencies {
optional("org.springframework.batch:spring-batch-core")
optional("org.springframework.data:spring-data-couchbase")
optional("org.springframework.data:spring-data-jpa")
optional("org.springframework.data:spring-data-mongodb")
optional("org.springframework.data:spring-data-redis")
optional("org.springframework.graphql:spring-graphql")
optional("org.springframework.kafka:spring-kafka")

View File

@ -41,7 +41,6 @@ org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetri
org.springframework.boot.actuate.autoconfigure.metrics.export.stackdriver.StackdriverMetricsExportAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.export.statsd.StatsdMetricsExportAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.jersey.JerseyServerMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.mongo.MongoMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.r2dbc.ConnectionPoolMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration

View File

@ -31,6 +31,7 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional(project(":spring-boot-project:spring-boot-docker-compose"))
optional(project(":spring-boot-project:spring-boot-metrics"))
optional(project(":spring-boot-project:spring-boot-reactor"))
optional(project(":spring-boot-project:spring-boot-testcontainers"))
optional("io.netty:netty-transport")

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.actuate.autoconfigure.metrics.mongo;
package org.springframework.boot.mongodb.actuate.metrics.autoconfigure;
import com.mongodb.MongoClientSettings;
import io.micrometer.core.instrument.MeterRegistry;
@ -31,8 +31,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
import org.springframework.boot.mongodb.autoconfigure.MongoAutoConfiguration;
import org.springframework.boot.mongodb.autoconfigure.MongoClientSettingsBuilderCustomizer;
import org.springframework.context.annotation.Bean;
@ -42,11 +40,11 @@ import org.springframework.context.annotation.Bean;
*
* @author Chris Bono
* @author Jonatan Ivanov
* @since 2.5.0
* @since 4.0.0
*/
@AutoConfiguration(before = MongoAutoConfiguration.class,
after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class })
@ConditionalOnClass(MongoClientSettings.class)
afterName = "org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration")
@ConditionalOnClass({ MongoClientSettings.class, MeterRegistry.class })
@ConditionalOnBean(MeterRegistry.class)
public class MongoMetricsAutoConfiguration {

View File

@ -15,6 +15,6 @@
*/
/**
* Auto-configuration for Mongo metrics.
* Auto-configuration for MongoDB metrics.
*/
package org.springframework.boot.actuate.autoconfigure.metrics.mongo;
package org.springframework.boot.mongodb.actuate.metrics.autoconfigure;

View File

@ -1,2 +1,3 @@
org.springframework.boot.mongodb.actuate.metrics.autoconfigure.MongoMetricsAutoConfiguration
org.springframework.boot.mongodb.autoconfigure.MongoAutoConfiguration
org.springframework.boot.mongodb.autoconfigure.MongoReactiveAutoConfiguration

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.actuate.autoconfigure.metrics.mongo;
package org.springframework.boot.mongodb.actuate.metrics.autoconfigure;
import java.util.List;
@ -29,10 +29,10 @@ import io.micrometer.core.instrument.binder.mongodb.MongoCommandTagsProvider;
import io.micrometer.core.instrument.binder.mongodb.MongoConnectionPoolTagsProvider;
import io.micrometer.core.instrument.binder.mongodb.MongoMetricsCommandListener;
import io.micrometer.core.instrument.binder.mongodb.MongoMetricsConnectionPoolListener;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.assertj.core.api.InstanceOfAssertFactories;
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.mongodb.autoconfigure.MongoAutoConfiguration;
import org.springframework.boot.test.context.FilteredClassLoader;
@ -57,7 +57,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsAMeterRegistryThenMetricsCommandListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.run((context) -> {
assertThat(context).hasSingleBean(MongoMetricsCommandListener.class);
@ -72,7 +72,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsAMeterRegistryThenMetricsConnectionPoolListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.run((context) -> {
assertThat(context).hasSingleBean(MongoMetricsConnectionPoolListener.class);
@ -98,7 +98,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsACustomMetricsCommandTagsProviderItIsUsed() {
final MongoCommandTagsProvider customTagsProvider = mock(MongoCommandTagsProvider.class);
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withBean("customMongoCommandTagsProvider", MongoCommandTagsProvider.class, () -> customTagsProvider)
.run((context) -> assertThat(getMongoCommandTagsProviderUsedToConstructListener(context))
@ -108,7 +108,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsACustomMetricsConnectionPoolTagsProviderItIsUsed() {
final MongoConnectionPoolTagsProvider customTagsProvider = mock(MongoConnectionPoolTagsProvider.class);
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withBean("customMongoConnectionPoolTagsProvider", MongoConnectionPoolTagsProvider.class,
() -> customTagsProvider)
@ -118,7 +118,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsNoMongoClientSettingsOnClasspathThenNoMetricsCommandListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withClassLoader(new FilteredClassLoader(MongoClientSettings.class))
.run(assertThatMetricsCommandListenerNotAdded());
@ -126,7 +126,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsNoMongoClientSettingsOnClasspathThenNoMetricsConnectionPoolListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withClassLoader(new FilteredClassLoader(MongoClientSettings.class))
.run(assertThatMetricsConnectionPoolListenerNotAdded());
@ -134,7 +134,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsNoMongoMetricsCommandListenerOnClasspathThenNoMetricsCommandListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withClassLoader(new FilteredClassLoader(MongoMetricsCommandListener.class))
.run(assertThatMetricsCommandListenerNotAdded());
@ -142,7 +142,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenThereIsNoMongoMetricsConnectionPoolListenerOnClasspathThenNoMetricsConnectionPoolListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withClassLoader(new FilteredClassLoader(MongoMetricsConnectionPoolListener.class))
.run(assertThatMetricsConnectionPoolListenerNotAdded());
@ -150,7 +150,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenMetricsCommandListenerEnabledPropertyFalseThenNoMetricsCommandListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withPropertyValues("management.metrics.mongo.command.enabled:false")
.run(assertThatMetricsCommandListenerNotAdded());
@ -158,7 +158,7 @@ class MongoMetricsAutoConfigurationTests {
@Test
void whenMetricsConnectionPoolListenerEnabledPropertyFalseThenNoMetricsConnectionPoolListenerIsAdded() {
this.contextRunner.with(MetricsRun.simple())
this.contextRunner.withBean(SimpleMeterRegistry.class)
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class))
.withPropertyValues("management.metrics.mongo.connectionpool.enabled:false")
.run(assertThatMetricsConnectionPoolListenerNotAdded());