diff --git a/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/data/nosql.adoc b/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/data/nosql.adoc index 58bb3ee1825..d5ec6fb9a00 100644 --- a/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/data/nosql.adoc +++ b/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/data/nosql.adoc @@ -130,14 +130,13 @@ Otherwise a javadoc:{url-mongodb-driver-core-javadoc}/com.mongodb.MongoClientSet In either case, you can declare one or more javadoc:org.springframework.boot.autoconfigure.mongo.MongoClientSettingsBuilderCustomizer[] beans to fine-tune the javadoc:{url-mongodb-driver-core-javadoc}/com.mongodb.MongoClientSettings[] configuration. Each will be called in order with the javadoc:{url-mongodb-driver-core-javadoc}/com.mongodb.MongoClientSettings$Builder[] that is used to build the javadoc:{url-mongodb-driver-core-javadoc}/com.mongodb.MongoClientSettings[]. -You can set the configprop:spring.data.mongodb.uri[] property to change the URL and configure additional settings such as the _replica set_, as shown in the following example: +You can set the configprop:spring.mongodb.uri[] property to change the URL and configure additional settings such as the _replica set_, as shown in the following example: [configprops,yaml] ---- spring: - data: - mongodb: - uri: "mongodb://user:secret@mongoserver1.example.com:27017,mongoserver2.example.com:23456/test" + mongodb: + uri: "mongodb://user:secret@mongoserver1.example.com:27017,mongoserver2.example.com:23456/test" ---- Alternatively, you can specify connection details using discrete properties. @@ -146,15 +145,14 @@ For example, you might declare the following settings in your `application.prope [configprops,yaml] ---- spring: - data: - mongodb: - host: "mongoserver1.example.com" - port: 27017 - additional-hosts: - - "mongoserver2.example.com:23456" - database: "test" - username: "user" - password: "secret" + mongodb: + host: "mongoserver1.example.com" + port: 27017 + additional-hosts: + - "mongoserver2.example.com:23456" + database: "test" + username: "user" + password: "secret" ---- The auto-configured javadoc:{url-mongodb-driver-sync-javadoc}/com.mongodb.client.MongoClient[] can be configured to use SSL for communication with the server by setting the properties as shown in this example: @@ -162,11 +160,10 @@ The auto-configured javadoc:{url-mongodb-driver-sync-javadoc}/com.mongodb.client [configprops,yaml] ---- spring: - data: - mongodb: - uri: "mongodb://user:secret@mongoserver1.example.com:27017,mongoserver2.example.com:23456/test" - ssl: - enabled: true + mongodb: + uri: "mongodb://user:secret@mongoserver1.example.com:27017,mongoserver2.example.com:23456/test" + ssl: + enabled: true ---- Custom SSL trust material can be configured in an xref:features/ssl.adoc[SSL bundle] and applied to the javadoc:{url-mongodb-driver-sync-javadoc}/com.mongodb.client.MongoClient[] as shown in this example: @@ -174,17 +171,16 @@ Custom SSL trust material can be configured in an xref:features/ssl.adoc[SSL bun [configprops,yaml] ---- spring: - data: - mongodb: - uri: "mongodb://user:secret@mongoserver1.example.com:27017,mongoserver2.example.com:23456/test" - ssl: - bundle: "example" + mongodb: + uri: "mongodb://user:secret@mongoserver1.example.com:27017,mongoserver2.example.com:23456/test" + ssl: + bundle: "example" ---- [TIP] ==== -If `spring.data.mongodb.port` is not specified, the default of `27017` is used. +If configprop:spring.mongodb.port[] is not specified, the default of `27017` is used. You could delete this line from the example shown earlier. You can also specify the port as part of the host address by using the `host:port` syntax. diff --git a/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.java b/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.java index d851836e96a..625cd2c5eee 100644 --- a/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.java +++ b/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.java @@ -33,8 +33,8 @@ public class MyContainersConfiguration { @Bean public DynamicPropertyRegistrar mongoDbProperties(MongoDBContainer container) { return (properties) -> { - properties.add("spring.data.mongodb.host", container::getHost); - properties.add("spring.data.mongodb.port", container::getFirstMappedPort); + properties.add("spring.mongodb.host", container::getHost); + properties.add("spring.mongodb.port", container::getFirstMappedPort); }; } diff --git a/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.kt b/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.kt index c74eb3dc780..60a371ab769 100644 --- a/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.kt +++ b/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/features/devservices/testcontainers/atdevelopmenttime/dynamicproperties/MyContainersConfiguration.kt @@ -32,8 +32,8 @@ class MyContainersConfiguration { @Bean fun mongoDbProperties(container: MongoDBContainer): DynamicPropertyRegistrar { return DynamicPropertyRegistrar { properties -> - properties.add("spring.data.mongodb.host") { container.host } - properties.add("spring.data.mongodb.port") { container.firstMappedPort } + properties.add("spring.mongodb.host") { container.host } + properties.add("spring.mongodb.port") { container.firstMappedPort } } } diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/DataMongoProperties.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/DataMongoProperties.java new file mode 100644 index 00000000000..a2de313f1d8 --- /dev/null +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/DataMongoProperties.java @@ -0,0 +1,94 @@ +/* + * Copyright 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.data.mongodb.autoconfigure; + +import org.jspecify.annotations.Nullable; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Configuration properties for Spring Data MongoDB. + * + * @author Andy Wilkinson + * @since 4.0.0 + */ +@ConfigurationProperties("spring.data.mongodb") +public class DataMongoProperties { + + /** + * Whether to enable auto-index creation. + */ + private @Nullable Boolean autoIndexCreation; + + /** + * Fully qualified name of the FieldNamingStrategy to use. + */ + private @Nullable Class> fieldNamingStrategy; + + private final Gridfs gridfs = new Gridfs(); + + public @Nullable Boolean isAutoIndexCreation() { + return this.autoIndexCreation; + } + + public void setAutoIndexCreation(@Nullable Boolean autoIndexCreation) { + this.autoIndexCreation = autoIndexCreation; + } + + public @Nullable Class> getFieldNamingStrategy() { + return this.fieldNamingStrategy; + } + + public void setFieldNamingStrategy(@Nullable Class> fieldNamingStrategy) { + this.fieldNamingStrategy = fieldNamingStrategy; + } + + public Gridfs getGridfs() { + return this.gridfs; + } + + public static class Gridfs { + + /** + * GridFS database name. + */ + private @Nullable String database; + + /** + * GridFS bucket name. + */ + private @Nullable String bucket; + + public @Nullable String getDatabase() { + return this.database; + } + + public void setDatabase(@Nullable String database) { + this.database = database; + } + + public @Nullable String getBucket() { + return this.bucket; + } + + public void setBucket(@Nullable String bucket) { + this.bucket = bucket; + } + + } + +} diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfiguration.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfiguration.java index 90bb976d1fd..a4d68ec14f4 100644 --- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfiguration.java +++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfiguration.java @@ -35,13 +35,13 @@ import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.gridfs.GridFsTemplate; /** - * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's mongo support. + * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's MongoDB support. *
* Registers a {@link MongoTemplate} and {@link GridFsTemplate} beans if no other beans of * the same type are configured. *
- * Honors the {@literal spring.data.mongodb.database} property if set, otherwise connects
- * to the {@literal test} database.
+ * Honors the {@literal spring.mongodb.database} property if set, otherwise connects to
+ * the {@literal test} database.
*
* @author Dave Syer
* @author Oliver Gierke
@@ -54,7 +54,7 @@ import org.springframework.data.mongodb.gridfs.GridFsTemplate;
*/
@AutoConfiguration(after = MongoAutoConfiguration.class)
@ConditionalOnClass({ MongoClient.class, MongoTemplate.class })
-@EnableConfigurationProperties(MongoProperties.class)
+@EnableConfigurationProperties({ MongoProperties.class, DataMongoProperties.class })
@Import({ MongoDataConfiguration.class, MongoDatabaseFactoryConfiguration.class,
MongoDatabaseFactoryDependentConfiguration.class })
public final class MongoDataAutoConfiguration {
diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataConfiguration.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataConfiguration.java
index f80c02d1428..a9a43bcfd1f 100644
--- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataConfiguration.java
+++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataConfiguration.java
@@ -23,7 +23,6 @@ import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.domain.EntityScanner;
import org.springframework.boot.context.properties.PropertyMapper;
-import org.springframework.boot.mongodb.autoconfigure.MongoProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -57,7 +56,7 @@ class MongoDataConfiguration {
@Bean
@ConditionalOnMissingBean
- MongoMappingContext mongoMappingContext(MongoProperties properties, MongoCustomConversions conversions,
+ MongoMappingContext mongoMappingContext(DataMongoProperties properties, MongoCustomConversions conversions,
MongoManagedTypes managedTypes) {
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
MongoMappingContext context = new MongoMappingContext();
diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java
index 1e08bdc5913..b09f9040d16 100644
--- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java
+++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDatabaseFactoryDependentConfiguration.java
@@ -23,8 +23,7 @@ import org.jspecify.annotations.Nullable;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.mongodb.autoconfigure.MongoProperties;
-import org.springframework.boot.mongodb.autoconfigure.MongoProperties.Gridfs;
+import org.springframework.boot.data.mongodb.autoconfigure.DataMongoProperties.Gridfs;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.dao.DataAccessException;
@@ -57,7 +56,7 @@ class MongoDatabaseFactoryDependentConfiguration {
@Bean
@ConditionalOnMissingBean(GridFsOperations.class)
- GridFsTemplate gridFsTemplate(MongoProperties properties, MongoDatabaseFactory factory,
+ GridFsTemplate gridFsTemplate(DataMongoProperties properties, MongoDatabaseFactory factory,
MongoTemplate mongoTemplate) {
return new GridFsTemplate(new GridFsMongoDatabaseFactory(factory, properties), mongoTemplate.getConverter(),
properties.getGridfs().getBucket());
@@ -71,9 +70,9 @@ class MongoDatabaseFactoryDependentConfiguration {
private final MongoDatabaseFactory mongoDatabaseFactory;
- private final MongoProperties properties;
+ private final DataMongoProperties properties;
- GridFsMongoDatabaseFactory(MongoDatabaseFactory mongoDatabaseFactory, MongoProperties properties) {
+ GridFsMongoDatabaseFactory(MongoDatabaseFactory mongoDatabaseFactory, DataMongoProperties properties) {
Assert.notNull(mongoDatabaseFactory, "'mongoDatabaseFactory' must not be null");
Assert.notNull(properties, "'properties' must not be null");
this.mongoDatabaseFactory = mongoDatabaseFactory;
diff --git a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java
index cf4952a2e72..bc10620de67 100644
--- a/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java
+++ b/module/spring-boot-data-mongodb/src/main/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfiguration.java
@@ -33,9 +33,9 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.data.mongodb.autoconfigure.DataMongoProperties.Gridfs;
import org.springframework.boot.mongodb.autoconfigure.MongoConnectionDetails;
import org.springframework.boot.mongodb.autoconfigure.MongoProperties;
-import org.springframework.boot.mongodb.autoconfigure.MongoProperties.Gridfs;
import org.springframework.boot.mongodb.autoconfigure.MongoReactiveAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
@@ -72,21 +72,15 @@ import org.springframework.util.StringUtils;
@AutoConfiguration(after = MongoReactiveAutoConfiguration.class)
@ConditionalOnClass({ MongoClient.class, ReactiveMongoTemplate.class })
@ConditionalOnBean(MongoClient.class)
-@EnableConfigurationProperties(MongoProperties.class)
+@EnableConfigurationProperties({ MongoProperties.class, DataMongoProperties.class })
@Import(MongoDataConfiguration.class)
public final class MongoReactiveDataAutoConfiguration {
- private final MongoProperties properties;
-
- MongoReactiveDataAutoConfiguration(MongoProperties properties) {
- this.properties = properties;
- }
-
@Bean
@ConditionalOnMissingBean(ReactiveMongoDatabaseFactory.class)
- SimpleReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory(MongoClient mongo,
+ SimpleReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory(MongoProperties properties, MongoClient mongo,
MongoConnectionDetails connectionDetails) {
- String database = this.properties.getDatabase();
+ String database = properties.getDatabase();
if (database == null) {
database = connectionDetails.getConnectionString().getDatabase();
}
@@ -109,11 +103,12 @@ public final class MongoReactiveDataAutoConfiguration {
@Bean
@ConditionalOnMissingBean(ReactiveGridFsOperations.class)
- ReactiveGridFsTemplate reactiveGridFsTemplate(ReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory,
- MappingMongoConverter mappingMongoConverter, DataBufferFactory dataBufferFactory) {
+ ReactiveGridFsTemplate reactiveGridFsTemplate(DataMongoProperties dataProperties,
+ ReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory, MappingMongoConverter mappingMongoConverter,
+ DataBufferFactory dataBufferFactory) {
return new ReactiveGridFsTemplate(dataBufferFactory,
- new GridFsReactiveMongoDatabaseFactory(reactiveMongoDatabaseFactory, this.properties),
- mappingMongoConverter, this.properties.getGridfs().getBucket());
+ new GridFsReactiveMongoDatabaseFactory(reactiveMongoDatabaseFactory, dataProperties),
+ mappingMongoConverter, dataProperties.getGridfs().getBucket());
}
/**
@@ -124,9 +119,9 @@ public final class MongoReactiveDataAutoConfiguration {
private final ReactiveMongoDatabaseFactory delegate;
- private final MongoProperties properties;
+ private final DataMongoProperties properties;
- GridFsReactiveMongoDatabaseFactory(ReactiveMongoDatabaseFactory delegate, MongoProperties properties) {
+ GridFsReactiveMongoDatabaseFactory(ReactiveMongoDatabaseFactory delegate, DataMongoProperties properties) {
this.delegate = delegate;
this.properties = properties;
}
diff --git a/module/spring-boot-data-mongodb/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/module/spring-boot-data-mongodb/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index c6be55b70f7..066dabe99f6 100644
--- a/module/spring-boot-data-mongodb/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/module/spring-boot-data-mongodb/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -5,6 +5,20 @@
"type": "java.lang.Boolean",
"description": "Whether to enable MongoDB health check.",
"defaultValue": true
+ },
+ {
+ "name": "spring.data.mongodb.grid-fs-database",
+ "type": "java.lang.String",
+ "deprecation": {
+ "replacement": "spring.data.mongodb.gridfs.database",
+ "level": "error"
+ }
+ },
+ {
+ "name": "spring.data.mongodb.repositories.type",
+ "type": "org.springframework.boot.autoconfigure.data.RepositoryType",
+ "description": "Type of Mongo repositories to enable.",
+ "defaultValue": "auto"
}
],
"hints": [
@@ -18,22 +32,6 @@
}
}
]
- },
- {
- "name": "spring.data.mongodb.protocol",
- "values": [
- {
- "value": "mongodb"
- },
- {
- "value": "mongodb+srv"
- }
- ],
- "providers": [
- {
- "name": "any"
- }
- ]
}
]
}
\ No newline at end of file
diff --git a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/DataMongoPropertiesTests.java b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/DataMongoPropertiesTests.java
new file mode 100644
index 00000000000..22ca3eb6082
--- /dev/null
+++ b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/DataMongoPropertiesTests.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2012-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.data.mongodb.autoconfigure;
+
+import org.junit.jupiter.api.Test;
+
+import org.springframework.boot.autoconfigure.AutoConfigurations;
+import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Tests for {@link DataMongoProperties}.
+ *
+ * @author Andy Wilkinson
+ */
+class DataMongoPropertiesTests {
+
+ @Test
+ void canBindAutoIndexCreation() {
+ new ApplicationContextRunner().withConfiguration(AutoConfigurations.of(MongoDataAutoConfiguration.class))
+ .withPropertyValues("spring.data.mongodb.auto-index-creation=true")
+ .run((context) -> {
+ DataMongoProperties properties = context.getBean(DataMongoProperties.class);
+ assertThat(properties.isAutoIndexCreation()).isTrue();
+ });
+ }
+
+}
diff --git a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java
index fa7d70ab4a0..7f00f0a8938 100644
--- a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java
+++ b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoDataAutoConfigurationTests.java
@@ -240,7 +240,7 @@ class MongoDataAutoConfigurationTests {
@Test
void databasePropertyIsUsed() {
- this.contextRunner.withPropertyValues("spring.data.mongodb.database=mydb").run((context) -> {
+ this.contextRunner.withPropertyValues("spring.mongodb.database=mydb").run((context) -> {
MongoDatabaseFactory factory = context.getBean(MongoDatabaseFactory.class);
assertThat(factory).isInstanceOf(SimpleMongoClientDatabaseFactory.class);
assertThat(factory.getMongoDatabase().getName()).isEqualTo("mydb");
@@ -249,19 +249,18 @@ class MongoDataAutoConfigurationTests {
@Test
void databaseInUriPropertyIsUsed() {
- this.contextRunner.withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/mydb")
- .run((context) -> {
- MongoDatabaseFactory factory = context.getBean(MongoDatabaseFactory.class);
- assertThat(factory).isInstanceOf(SimpleMongoClientDatabaseFactory.class);
- assertThat(factory.getMongoDatabase().getName()).isEqualTo("mydb");
- });
+ this.contextRunner.withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/mydb").run((context) -> {
+ MongoDatabaseFactory factory = context.getBean(MongoDatabaseFactory.class);
+ assertThat(factory).isInstanceOf(SimpleMongoClientDatabaseFactory.class);
+ assertThat(factory.getMongoDatabase().getName()).isEqualTo("mydb");
+ });
}
@Test
void databasePropertyOverridesUriProperty() {
this.contextRunner
- .withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/notused",
- "spring.data.mongodb.database=mydb")
+ .withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/notused",
+ "spring.mongodb.database=mydb")
.run((context) -> {
MongoDatabaseFactory factory = context.getBean(MongoDatabaseFactory.class);
assertThat(factory).isInstanceOf(SimpleMongoClientDatabaseFactory.class);
@@ -272,8 +271,7 @@ class MongoDataAutoConfigurationTests {
@Test
void databasePropertyIsUsedWhenNoDatabaseInUri() {
this.contextRunner
- .withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/",
- "spring.data.mongodb.database=mydb")
+ .withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/", "spring.mongodb.database=mydb")
.run((context) -> {
MongoDatabaseFactory factory = context.getBean(MongoDatabaseFactory.class);
assertThat(factory).isInstanceOf(SimpleMongoClientDatabaseFactory.class);
@@ -283,7 +281,7 @@ class MongoDataAutoConfigurationTests {
@Test
void contextFailsWhenDatabaseNotSet() {
- this.contextRunner.withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/")
+ this.contextRunner.withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/")
.run((context) -> assertThat(context).getFailure().hasMessageContaining("Database name must not be empty"));
}
diff --git a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java
index 8428e89e311..6dcfec7bcd5 100644
--- a/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java
+++ b/module/spring-boot-data-mongodb/src/test/java/org/springframework/boot/data/mongodb/autoconfigure/MongoReactiveDataAutoConfigurationTests.java
@@ -100,7 +100,7 @@ class MongoReactiveDataAutoConfigurationTests {
@Test
void databasePropertyIsUsed() {
- this.contextRunner.withPropertyValues("spring.data.mongodb.database=mydb").run((context) -> {
+ this.contextRunner.withPropertyValues("spring.mongodb.database=mydb").run((context) -> {
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("mydb");
@@ -109,19 +109,18 @@ class MongoReactiveDataAutoConfigurationTests {
@Test
void databaseInUriPropertyIsUsed() {
- this.contextRunner.withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/mydb")
- .run((context) -> {
- ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
- assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
- assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("mydb");
- });
+ this.contextRunner.withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/mydb").run((context) -> {
+ ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
+ assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
+ assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("mydb");
+ });
}
@Test
void databasePropertyOverridesUriProperty() {
this.contextRunner
- .withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/notused",
- "spring.data.mongodb.database=mydb")
+ .withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/notused",
+ "spring.mongodb.database=mydb")
.run((context) -> {
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
@@ -132,8 +131,7 @@ class MongoReactiveDataAutoConfigurationTests {
@Test
void databasePropertyIsUsedWhenNoDatabaseInUri() {
this.contextRunner
- .withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/",
- "spring.data.mongodb.database=mydb")
+ .withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/", "spring.mongodb.database=mydb")
.run((context) -> {
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
@@ -143,7 +141,7 @@ class MongoReactiveDataAutoConfigurationTests {
@Test
void contextFailsWhenDatabaseNotSet() {
- this.contextRunner.withPropertyValues("spring.data.mongodb.uri=mongodb://mongo.example.com/")
+ this.contextRunner.withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/")
.run((context) -> assertThat(context).getFailure().hasMessageContaining("Database name must not be empty"));
}
diff --git a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java
index 7da46d5ecef..63704d95e64 100644
--- a/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java
+++ b/module/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/autoconfigure/MongoProperties.java
@@ -39,7 +39,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Safeer Ansari
* @since 4.0.0
*/
-@ConfigurationProperties("spring.data.mongodb")
+@ConfigurationProperties("spring.mongodb")
public class MongoProperties {
/**
@@ -89,8 +89,6 @@ public class MongoProperties {
*/
private @Nullable String authenticationDatabase;
- private final Gridfs gridfs = new Gridfs();
-
/**
* Login user of the mongo server. Ignored if 'uri' is set.
*/
@@ -106,11 +104,6 @@ public class MongoProperties {
*/
private @Nullable String replicaSetName;
- /**
- * Fully qualified name of the FieldNamingStrategy to use.
- */
- private @Nullable Class> fieldNamingStrategy;
-
/**
* Representation to use when converting a UUID to a BSON binary value.
*/
@@ -118,11 +111,6 @@ public class MongoProperties {
private final Ssl ssl = new Ssl();
- /**
- * Whether to enable auto-index creation.
- */
- private @Nullable Boolean autoIndexCreation;
-
public void setProtocol(String protocol) {
this.protocol = protocol;
}
@@ -179,14 +167,6 @@ public class MongoProperties {
this.replicaSetName = replicaSetName;
}
- public @Nullable Class> getFieldNamingStrategy() {
- return this.fieldNamingStrategy;
- }
-
- public void setFieldNamingStrategy(@Nullable Class> fieldNamingStrategy) {
- this.fieldNamingStrategy = fieldNamingStrategy;
- }
-
public UuidRepresentation getUuidRepresentation() {
return this.uuidRepresentation;
}
@@ -215,10 +195,6 @@ public class MongoProperties {
this.port = port;
}
- public Gridfs getGridfs() {
- return this.gridfs;
- }
-
public @Nullable String getMongoClientDatabase() {
if (this.database != null) {
return this.database;
@@ -226,14 +202,6 @@ public class MongoProperties {
return new ConnectionString(determineUri()).getDatabase();
}
- public @Nullable Boolean isAutoIndexCreation() {
- return this.autoIndexCreation;
- }
-
- public void setAutoIndexCreation(@Nullable Boolean autoIndexCreation) {
- this.autoIndexCreation = autoIndexCreation;
- }
-
public @Nullable List