Skip to content

Commit 47f4bb0

Browse files
committed
Merge branch '2.1.x'
Closes spring-projectsgh-17481
2 parents 2208dc1 + 50fe7a0 commit 47f4bb0

File tree

4 files changed

+69
-8
lines changed

4 files changed

+69
-8
lines changed

Diff for: spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoClientDependsOnBeanFactoryPostProcessor.java

+17
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,25 @@
3636
@Order(Ordered.LOWEST_PRECEDENCE)
3737
public class MongoClientDependsOnBeanFactoryPostProcessor extends AbstractDependsOnBeanFactoryPostProcessor {
3838

39+
/**
40+
* Creates a new {@code MongoClientDependsOnBeanFactoryPostProcessor} that will set up
41+
* dependencies upon beans with the given names.
42+
* @param dependsOn names of the beans to depend upon
43+
* @deprecated since 2.1.7 in favor of
44+
* {@link #MongoClientDependsOnBeanFactoryPostProcessor}
45+
*/
46+
@Deprecated
3947
public MongoClientDependsOnBeanFactoryPostProcessor(String... dependsOn) {
4048
super(MongoClient.class, MongoClientFactoryBean.class, dependsOn);
4149
}
4250

51+
/**
52+
* Creates a new {@code MongoClientDependsOnBeanFactoryPostProcessor} that will set up
53+
* dependencies upon beans with the given types.
54+
* @param dependsOn types of the beans to depend upon
55+
*/
56+
public MongoClientDependsOnBeanFactoryPostProcessor(Class<?>... dependsOn) {
57+
super(MongoClient.class, MongoClientFactoryBean.class, dependsOn);
58+
}
59+
4360
}

Diff for: spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor.java

+17
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,25 @@
3737
public class ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor
3838
extends AbstractDependsOnBeanFactoryPostProcessor {
3939

40+
/**
41+
* Creates a new {@code ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor}
42+
* that will set up dependencies upon beans with the given names.
43+
* @param dependsOn names of the beans to depend upon
44+
* @deprecated since 2.1.7 in favor of
45+
* {@link #ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor}
46+
*/
47+
@Deprecated
4048
public ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor(String... dependsOn) {
4149
super(MongoClient.class, ReactiveMongoClientFactoryBean.class, dependsOn);
4250
}
4351

52+
/**
53+
* Creates a new {@code ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor}
54+
* that will set up dependencies upon beans with the given types.
55+
* @param dependsOn types of the beans to depend upon
56+
*/
57+
public ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor(Class<?>... dependsOn) {
58+
super(MongoClient.class, ReactiveMongoClientFactoryBean.class, dependsOn);
59+
}
60+
4461
}

Diff for: spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfiguration.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
* @author Andy Wilkinson
7878
* @author Yogesh Lonkar
7979
* @author Mark Paluch
80+
* @author Issam El-atif
8081
* @since 1.3.0
8182
*/
8283
@Configuration(proxyBeanMethods = false)
@@ -211,30 +212,31 @@ private ArtifactStoreBuilder getArtifactStore(Logger logger,
211212
}
212213

213214
/**
214-
* Additional configuration to ensure that {@link MongoClient} beans depend on the
215-
* {@code embeddedMongoServer} bean.
215+
* Additional configuration to ensure that {@link MongoClient} beans depend on any
216+
* {@link MongodExecutable} beans.
216217
*/
217218
@Configuration(proxyBeanMethods = false)
218219
@ConditionalOnClass({ MongoClient.class, MongoClientFactoryBean.class })
219220
protected static class EmbeddedMongoDependencyConfiguration extends MongoClientDependsOnBeanFactoryPostProcessor {
220221

221-
public EmbeddedMongoDependencyConfiguration() {
222-
super("embeddedMongoServer");
222+
EmbeddedMongoDependencyConfiguration() {
223+
super(MongodExecutable.class);
223224
}
224225

225226
}
226227

227228
/**
228-
* Additional configuration to ensure that {@link MongoClient} beans depend on the
229-
* {@code embeddedMongoServer} bean.
229+
* Additional configuration to ensure that
230+
* {@link com.mongodb.reactivestreams.client.MongoClient} beans depend on any
231+
* {@link MongodExecutable} beans.
230232
*/
231233
@Configuration(proxyBeanMethods = false)
232234
@ConditionalOnClass({ com.mongodb.reactivestreams.client.MongoClient.class, ReactiveMongoClientFactoryBean.class })
233235
protected static class EmbeddedReactiveMongoDependencyConfiguration
234236
extends ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor {
235237

236-
public EmbeddedReactiveMongoDependencyConfiguration() {
237-
super("embeddedMongoServer");
238+
EmbeddedReactiveMongoDependencyConfiguration() {
239+
super(MongodExecutable.class);
238240
}
239241

240242
}

Diff for: spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfigurationTests.java

+25
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@
2020
import java.io.IOException;
2121
import java.nio.file.Path;
2222
import java.util.EnumSet;
23+
import java.util.Map;
2324
import java.util.stream.Collectors;
2425

2526
import com.mongodb.MongoClient;
2627
import de.flapdoodle.embed.mongo.MongodExecutable;
28+
import de.flapdoodle.embed.mongo.MongodStarter;
2729
import de.flapdoodle.embed.mongo.config.IMongodConfig;
2830
import de.flapdoodle.embed.mongo.config.Storage;
2931
import de.flapdoodle.embed.mongo.distribution.Feature;
@@ -37,6 +39,7 @@
3739

3840
import org.springframework.beans.DirectFieldAccessor;
3941
import org.springframework.beans.factory.annotation.Value;
42+
import org.springframework.beans.factory.config.BeanDefinition;
4043
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
4144
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
4245
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
@@ -56,6 +59,7 @@
5659
* @author Henryk Konsek
5760
* @author Andy Wilkinson
5861
* @author Stephane Nicoll
62+
* @author Issam El-atif
5963
*/
6064
class EmbeddedMongoAutoConfigurationTests {
6165

@@ -186,6 +190,16 @@ void shutdownHookIsNotRegistered() {
186190
assertThat(this.context.getBean(MongodExecutable.class).isRegisteredJobKiller()).isFalse();
187191
}
188192

193+
@Test
194+
void customMongoServerConfiguration() {
195+
load(CustomMongoConfiguration.class);
196+
Map<String, MongoClient> mongoClients = this.context.getBeansOfType(MongoClient.class);
197+
for (String mongoClientBeanName : mongoClients.keySet()) {
198+
BeanDefinition beanDefinition = this.context.getBeanFactory().getBeanDefinition(mongoClientBeanName);
199+
assertThat(beanDefinition.getDependsOn()).contains("customMongoServer");
200+
}
201+
}
202+
189203
private void assertVersionConfiguration(String configuredVersion, String expectedVersion) {
190204
this.context = new AnnotationConfigApplicationContext();
191205
TestPropertyValues.of("spring.data.mongodb.port=0").applyTo(this.context);
@@ -248,4 +262,15 @@ DownloadConfigBuilderCustomizer testDownloadConfigBuilderCustomizer() {
248262

249263
}
250264

265+
@Configuration(proxyBeanMethods = false)
266+
static class CustomMongoConfiguration {
267+
268+
@Bean(initMethod = "start", destroyMethod = "stop")
269+
MongodExecutable customMongoServer(IRuntimeConfig runtimeConfig, IMongodConfig mongodConfig) {
270+
MongodStarter mongodStarter = MongodStarter.getInstance(runtimeConfig);
271+
return mongodStarter.prepare(mongodConfig);
272+
}
273+
274+
}
275+
251276
}

0 commit comments

Comments
 (0)