Skip to content

Commit fa07419

Browse files
committed
Merge branch '3.2.x'
Closes gh-40851
2 parents 6351501 + a894879 commit fa07419

File tree

5 files changed

+44
-32
lines changed

5 files changed

+44
-32
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoDataConfiguration.java

+20-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2022 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@
1919
import java.util.Collections;
2020

2121
import org.springframework.beans.BeanUtils;
22+
import org.springframework.beans.factory.ObjectProvider;
2223
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2324
import org.springframework.boot.autoconfigure.domain.EntityScanner;
2425
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
@@ -27,8 +28,14 @@
2728
import org.springframework.context.annotation.Bean;
2829
import org.springframework.context.annotation.Configuration;
2930
import org.springframework.data.mapping.model.FieldNamingStrategy;
31+
import org.springframework.data.mongodb.MongoDatabaseFactory;
3032
import org.springframework.data.mongodb.MongoManagedTypes;
33+
import org.springframework.data.mongodb.core.convert.DbRefResolver;
34+
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
35+
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
36+
import org.springframework.data.mongodb.core.convert.MongoConverter;
3137
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
38+
import org.springframework.data.mongodb.core.convert.NoOpDbRefResolver;
3239
import org.springframework.data.mongodb.core.mapping.Document;
3340
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
3441

@@ -70,4 +77,16 @@ MongoCustomConversions mongoCustomConversions() {
7077
return new MongoCustomConversions(Collections.emptyList());
7178
}
7279

80+
@Bean
81+
@ConditionalOnMissingBean(MongoConverter.class)
82+
MappingMongoConverter mappingMongoConverter(ObjectProvider<MongoDatabaseFactory> factory,
83+
MongoMappingContext context, MongoCustomConversions conversions) {
84+
MongoDatabaseFactory mongoDatabaseFactory = factory.getIfAvailable();
85+
DbRefResolver dbRefResolver = (mongoDatabaseFactory != null) ? new DefaultDbRefResolver(mongoDatabaseFactory)
86+
: NoOpDbRefResolver.INSTANCE;
87+
MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
88+
mappingConverter.setCustomConversions(conversions);
89+
return mappingConverter;
90+
}
91+
7392
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoDatabaseFactoryDependentConfiguration.java

+1-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -33,12 +33,7 @@
3333
import org.springframework.data.mongodb.MongoDatabaseFactory;
3434
import org.springframework.data.mongodb.core.MongoOperations;
3535
import org.springframework.data.mongodb.core.MongoTemplate;
36-
import org.springframework.data.mongodb.core.convert.DbRefResolver;
37-
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
38-
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
3936
import org.springframework.data.mongodb.core.convert.MongoConverter;
40-
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
41-
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
4237
import org.springframework.data.mongodb.gridfs.GridFsOperations;
4338
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
4439
import org.springframework.util.Assert;
@@ -61,16 +56,6 @@ MongoTemplate mongoTemplate(MongoDatabaseFactory factory, MongoConverter convert
6156
return new MongoTemplate(factory, converter);
6257
}
6358

64-
@Bean
65-
@ConditionalOnMissingBean(MongoConverter.class)
66-
MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory factory, MongoMappingContext context,
67-
MongoCustomConversions conversions) {
68-
DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
69-
MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
70-
mappingConverter.setCustomConversions(conversions);
71-
return mappingConverter;
72-
}
73-
7459
@Bean
7560
@ConditionalOnMissingBean(GridFsOperations.class)
7661
GridFsTemplate gridFsTemplate(MongoProperties properties, MongoDatabaseFactory factory, MongoTemplate mongoTemplate,

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java

+1-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -48,9 +48,6 @@
4848
import org.springframework.data.mongodb.core.SimpleReactiveMongoDatabaseFactory;
4949
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
5050
import org.springframework.data.mongodb.core.convert.MongoConverter;
51-
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
52-
import org.springframework.data.mongodb.core.convert.NoOpDbRefResolver;
53-
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
5451
import org.springframework.data.mongodb.gridfs.ReactiveGridFsOperations;
5552
import org.springframework.data.mongodb.gridfs.ReactiveGridFsTemplate;
5653
import org.springframework.util.StringUtils;
@@ -101,15 +98,6 @@ public ReactiveMongoTemplate reactiveMongoTemplate(ReactiveMongoDatabaseFactory
10198
return new ReactiveMongoTemplate(reactiveMongoDatabaseFactory, converter);
10299
}
103100

104-
@Bean
105-
@ConditionalOnMissingBean(MongoConverter.class)
106-
public MappingMongoConverter mappingMongoConverter(MongoMappingContext context,
107-
MongoCustomConversions conversions) {
108-
MappingMongoConverter mappingConverter = new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, context);
109-
mappingConverter.setCustomConversions(conversions);
110-
return mappingConverter;
111-
}
112-
113101
@Bean
114102
@ConditionalOnMissingBean(DataBufferFactory.class)
115103
public DefaultDataBufferFactory dataBufferFactory() {

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfigurationTests.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -50,6 +50,8 @@
5050
import org.springframework.data.mongodb.MongoDatabaseFactory;
5151
import org.springframework.data.mongodb.core.MongoTemplate;
5252
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
53+
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
54+
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
5355
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
5456
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
5557
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
@@ -319,6 +321,14 @@ public ConnectionString getConnectionString() {
319321
.doesNotHaveBean(PropertiesMongoConnectionDetails.class));
320322
}
321323

324+
@Test
325+
void mappingMongoConverterHasADefaultDbRefResolver() {
326+
this.contextRunner.run((context) -> {
327+
MappingMongoConverter converter = context.getBean(MappingMongoConverter.class);
328+
assertThat(converter).extracting("dbRefResolver").isInstanceOf(DefaultDbRefResolver.class);
329+
});
330+
}
331+
322332
private static void assertDomainTypesDiscovered(MongoMappingContext mappingContext, Class<?>... types) {
323333
ManagedTypes managedTypes = (ManagedTypes) ReflectionTestUtils.getField(mappingContext, "managedTypes");
324334
assertThat(managedTypes.toList()).containsOnly(types);

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -35,6 +35,8 @@
3535
import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory;
3636
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
3737
import org.springframework.data.mongodb.core.SimpleReactiveMongoDatabaseFactory;
38+
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
39+
import org.springframework.data.mongodb.core.convert.NoOpDbRefResolver;
3840
import org.springframework.data.mongodb.gridfs.ReactiveGridFsTemplate;
3941
import org.springframework.test.util.ReflectionTestUtils;
4042

@@ -161,6 +163,14 @@ void contextFailsWhenDatabaseNotSet() {
161163
.run((context) -> assertThat(context).getFailure().hasMessageContaining("Database name must not be empty"));
162164
}
163165

166+
@Test
167+
void mappingMongoConverterHasANoOpDbRefResolver() {
168+
this.contextRunner.run((context) -> {
169+
MappingMongoConverter converter = context.getBean(MappingMongoConverter.class);
170+
assertThat(converter).extracting("dbRefResolver").isInstanceOf(NoOpDbRefResolver.class);
171+
});
172+
}
173+
164174
@SuppressWarnings("unchecked")
165175
private String grisFsTemplateDatabaseName(AssertableApplicationContext context) {
166176
assertThat(context).hasSingleBean(ReactiveGridFsTemplate.class);

0 commit comments

Comments
 (0)