From d9c9ed1d52812cb101bc05b97621e6e8c7530830 Mon Sep 17 00:00:00 2001 From: ayudovin Date: Fri, 5 Apr 2019 11:48:19 +0300 Subject: [PATCH 1/2] Add auto-configuration support for ReactiveGridFsTemplate See gh-16467 --- .../MongoReactiveDataAutoConfiguration.java | 20 +++++++++++++++++++ ...ngoReactiveDataAutoConfigurationTests.java | 8 ++++++++ 2 files changed, 28 insertions(+) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java index 8b3d7230afb..e6e0e4c5163 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java @@ -29,6 +29,8 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.core.io.buffer.DataBufferFactory; +import org.springframework.core.io.buffer.DefaultDataBufferFactory; import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.data.mongodb.core.SimpleReactiveMongoDatabaseFactory; @@ -37,6 +39,7 @@ import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoCustomConversions; import org.springframework.data.mongodb.core.convert.NoOpDbRefResolver; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; +import org.springframework.data.mongodb.gridfs.ReactiveGridFsTemplate; /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's reactive mongo @@ -49,6 +52,7 @@ import org.springframework.data.mongodb.core.mapping.MongoMappingContext; * to the {@literal test} database. * * @author Mark Paluch + * @author Artsiom Yudovin * @since 2.0.0 */ @Configuration(proxyBeanMethods = false) @@ -85,4 +89,20 @@ public class MongoReactiveDataAutoConfiguration { return mappingConverter; } + @Bean + @ConditionalOnMissingBean + public DataBufferFactory dataBufferFactory() { + return new DefaultDataBufferFactory(); + } + + @Bean + @ConditionalOnMissingBean + public ReactiveGridFsTemplate reactiveGridFsTemplate( + ReactiveMongoDatabaseFactory reactiveMongoDbFactory, + MappingMongoConverter mappingMongoConverter, + DataBufferFactory dataBufferFactory) { + return new ReactiveGridFsTemplate(dataBufferFactory, reactiveMongoDbFactory, + mappingMongoConverter, null); + } + } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java index 78646e7a350..3e23a6b25b0 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java @@ -23,6 +23,7 @@ import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoCon import org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; +import org.springframework.data.mongodb.gridfs.ReactiveGridFsTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -30,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThat; * Tests for {@link MongoReactiveDataAutoConfiguration}. * * @author Mark Paluch + * @author Artsiom Yudovin */ public class MongoReactiveDataAutoConfigurationTests { @@ -55,4 +57,10 @@ public class MongoReactiveDataAutoConfigurationTests { .doesNotHaveBean(MongoReactiveDataAutoConfiguration.class)); } + @Test + public void gridFsTemplateExists() { + this.contextRunner.run((context) -> assertThat(context) + .hasSingleBean(ReactiveGridFsTemplate.class)); + } + } From e24c17d5249a5467218ca65dc9878f3de4391018 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 17 Apr 2019 15:36:58 +0200 Subject: [PATCH 2/2] Polish "Add auto-configuration support for ReactiveGridFsTemplate" Closes gh-16467 --- .../mongo/MongoReactiveDataAutoConfiguration.java | 2 +- .../MongoReactiveDataAutoConfigurationTests.java | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java index e6e0e4c5163..558de32cd62 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java @@ -91,7 +91,7 @@ public class MongoReactiveDataAutoConfiguration { @Bean @ConditionalOnMissingBean - public DataBufferFactory dataBufferFactory() { + public DefaultDataBufferFactory dataBufferFactory() { return new DefaultDataBufferFactory(); } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java index 3e23a6b25b0..1fbda3cdcc8 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 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. @@ -47,6 +47,12 @@ public class MongoReactiveDataAutoConfigurationTests { .hasSingleBean(ReactiveMongoTemplate.class)); } + @Test + public void gridFsTemplateExists() { + this.contextRunner.run((context) -> assertThat(context) + .hasSingleBean(ReactiveGridFsTemplate.class)); + } + @Test public void backsOffIfMongoClientBeanIsNotPresent() { ApplicationContextRunner runner = new ApplicationContextRunner() @@ -57,10 +63,4 @@ public class MongoReactiveDataAutoConfigurationTests { .doesNotHaveBean(MongoReactiveDataAutoConfiguration.class)); } - @Test - public void gridFsTemplateExists() { - this.contextRunner.run((context) -> assertThat(context) - .hasSingleBean(ReactiveGridFsTemplate.class)); - } - }