From 3a4a9d27b29af4b9ce2a542100798a42e1de6765 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 26 Jul 2018 11:53:47 +0200 Subject: [PATCH] #382 - Adapt examples to Spring Boot 2.1 changes. Replace custom configuration with the one that Boot provides. Adapt to DataMongo configuration that requires a MongoClient bean. --- .../cassandra/basic/BasicConfiguration.java | 39 ++----------------- .../convert/ConverterConfiguration.java | 29 ++++---------- .../projection/ProjectionConfiguration.java | 30 ++------------ .../src/main/resources/application.properties | 2 + .../java8/CassandraConfiguration.java | 24 +----------- .../src/main/resources/application.properties | 2 + .../people/ApplicationConfiguration.java | 19 +-------- .../src/test/resources/application.properties | 2 + .../mongodb/ChangeStreamsTests.java | 12 ++++++ .../people/ApplicationConfiguration.java | 35 +---------------- 10 files changed, 39 insertions(+), 155 deletions(-) create mode 100644 cassandra/example/src/main/resources/application.properties create mode 100644 cassandra/java8/src/main/resources/application.properties diff --git a/cassandra/example/src/main/java/example/springdata/cassandra/basic/BasicConfiguration.java b/cassandra/example/src/main/java/example/springdata/cassandra/basic/BasicConfiguration.java index 76bf1b61..ee6d56b5 100644 --- a/cassandra/example/src/main/java/example/springdata/cassandra/basic/BasicConfiguration.java +++ b/cassandra/example/src/main/java/example/springdata/cassandra/basic/BasicConfiguration.java @@ -15,15 +15,9 @@ */ package example.springdata.cassandra.basic; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.Bean; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.AbstractCassandraConfiguration; -import org.springframework.data.cassandra.config.SchemaAction; -import org.springframework.data.cassandra.core.CassandraTemplate; -import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; - -import com.datastax.driver.core.Session; /** * Basic {@link Configuration} to create the necessary schema for the {@link User} table. @@ -32,32 +26,7 @@ import com.datastax.driver.core.Session; * @author Thomas Darimont * @author Mark Paluch */ -@Configuration -@EnableAutoConfiguration +@SpringBootApplication +@EntityScan(basePackageClasses = User.class) class BasicConfiguration { - - @Configuration - @EnableCassandraRepositories - static class CassandraConfig extends AbstractCassandraConfiguration { - - @Override - public String getKeyspaceName() { - return "example"; - } - - @Bean - public CassandraTemplate cassandraTemplate(Session session) { - return new CassandraTemplate(session); - } - - @Override - public String[] getEntityBasePackages() { - return new String[] { User.class.getPackage().getName() }; - } - - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } - } } diff --git a/cassandra/example/src/main/java/example/springdata/cassandra/convert/ConverterConfiguration.java b/cassandra/example/src/main/java/example/springdata/cassandra/convert/ConverterConfiguration.java index 3ebafeda..86485131 100644 --- a/cassandra/example/src/main/java/example/springdata/cassandra/convert/ConverterConfiguration.java +++ b/cassandra/example/src/main/java/example/springdata/cassandra/convert/ConverterConfiguration.java @@ -19,12 +19,12 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; -import org.springframework.data.cassandra.config.AbstractCassandraConfiguration; -import org.springframework.data.cassandra.config.SchemaAction; import org.springframework.data.cassandra.core.convert.CassandraCustomConversions; -import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; import org.springframework.util.StringUtils; import com.datastax.driver.core.Row; @@ -35,26 +35,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; * * @author Mark Paluch */ -@Configuration -@EnableCassandraRepositories -class ConverterConfiguration extends AbstractCassandraConfiguration { +@SpringBootApplication +@EntityScan(basePackageClasses = Addressbook.class) +class ConverterConfiguration { - @Override - public String getKeyspaceName() { - return "example"; - } - - @Override - public String[] getEntityBasePackages() { - return new String[] { Addressbook.class.getPackage().getName() }; - } - - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } - - @Override + @Bean public CassandraCustomConversions customConversions() { List> converters = new ArrayList<>(); diff --git a/cassandra/example/src/main/java/example/springdata/cassandra/projection/ProjectionConfiguration.java b/cassandra/example/src/main/java/example/springdata/cassandra/projection/ProjectionConfiguration.java index ba5cbed8..97d3a352 100644 --- a/cassandra/example/src/main/java/example/springdata/cassandra/projection/ProjectionConfiguration.java +++ b/cassandra/example/src/main/java/example/springdata/cassandra/projection/ProjectionConfiguration.java @@ -15,38 +15,16 @@ */ package example.springdata.cassandra.projection; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.AbstractCassandraConfiguration; -import org.springframework.data.cassandra.config.SchemaAction; -import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; /** * Basic {@link Configuration} to create the necessary schema for the {@link Customer} table. * * @author Mark Paluch */ -@Configuration -@EnableAutoConfiguration +@SpringBootApplication +@EntityScan(basePackageClasses = Customer.class) class ProjectionConfiguration { - - @Configuration - @EnableCassandraRepositories - static class CassandraConfig extends AbstractCassandraConfiguration { - - @Override - public String getKeyspaceName() { - return "example"; - } - - @Override - public String[] getEntityBasePackages() { - return new String[] { Customer.class.getPackage().getName() }; - } - - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } - } } diff --git a/cassandra/example/src/main/resources/application.properties b/cassandra/example/src/main/resources/application.properties new file mode 100644 index 00000000..b94b9f18 --- /dev/null +++ b/cassandra/example/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.data.cassandra.keyspace-name=example +spring.data.cassandra.schema-action=recreate diff --git a/cassandra/java8/src/main/java/example/springdata/cassandra/java8/CassandraConfiguration.java b/cassandra/java8/src/main/java/example/springdata/cassandra/java8/CassandraConfiguration.java index 8747d79d..cc16aace 100644 --- a/cassandra/java8/src/main/java/example/springdata/cassandra/java8/CassandraConfiguration.java +++ b/cassandra/java8/src/main/java/example/springdata/cassandra/java8/CassandraConfiguration.java @@ -15,31 +15,11 @@ */ package example.springdata.cassandra.java8; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.AbstractCassandraConfiguration; -import org.springframework.data.cassandra.config.SchemaAction; -import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; +import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author Mark Paluch */ -@Configuration -@EnableAutoConfiguration +@SpringBootApplication class CassandraConfiguration { - - @Configuration - @EnableCassandraRepositories - static class CassandraConfig extends AbstractCassandraConfiguration { - - @Override - public String getKeyspaceName() { - return "example"; - } - - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } - } } diff --git a/cassandra/java8/src/main/resources/application.properties b/cassandra/java8/src/main/resources/application.properties new file mode 100644 index 00000000..b94b9f18 --- /dev/null +++ b/cassandra/java8/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.data.cassandra.keyspace-name=example +spring.data.cassandra.schema-action=recreate diff --git a/cassandra/reactive/src/main/java/example/springdata/cassandra/people/ApplicationConfiguration.java b/cassandra/reactive/src/main/java/example/springdata/cassandra/people/ApplicationConfiguration.java index 17903fc2..802e3486 100644 --- a/cassandra/reactive/src/main/java/example/springdata/cassandra/people/ApplicationConfiguration.java +++ b/cassandra/reactive/src/main/java/example/springdata/cassandra/people/ApplicationConfiguration.java @@ -16,27 +16,12 @@ package example.springdata.cassandra.people; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration; -import org.springframework.data.cassandra.config.AbstractReactiveCassandraConfiguration; -import org.springframework.data.cassandra.config.SchemaAction; -import org.springframework.data.cassandra.repository.config.EnableReactiveCassandraRepositories; /** * Simple configuration for reactive Cassandra support. * * @author Mark Paluch */ -@SpringBootApplication(exclude = CassandraDataAutoConfiguration.class) -@EnableReactiveCassandraRepositories -class ApplicationConfiguration extends AbstractReactiveCassandraConfiguration { - - @Override - protected String getKeyspaceName() { - return "example"; - } - - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } +@SpringBootApplication +class ApplicationConfiguration { } diff --git a/cassandra/reactive/src/test/resources/application.properties b/cassandra/reactive/src/test/resources/application.properties index a1d10619..1ad354d9 100644 --- a/cassandra/reactive/src/test/resources/application.properties +++ b/cassandra/reactive/src/test/resources/application.properties @@ -1,2 +1,4 @@ +spring.data.cassandra.keyspace-name=example +spring.data.cassandra.schema-action=recreate logging.level.org.springframework.data.cassandra=INFO diff --git a/mongodb/change-streams/src/test/java/example/springdata/mongodb/ChangeStreamsTests.java b/mongodb/change-streams/src/test/java/example/springdata/mongodb/ChangeStreamsTests.java index 32b326bb..809ac651 100644 --- a/mongodb/change-streams/src/test/java/example/springdata/mongodb/ChangeStreamsTests.java +++ b/mongodb/change-streams/src/test/java/example/springdata/mongodb/ChangeStreamsTests.java @@ -50,6 +50,7 @@ import org.springframework.data.mongodb.core.messaging.MessageListenerContainer; import org.springframework.data.mongodb.core.messaging.Subscription; import org.springframework.test.context.junit4.SpringRunner; +import com.mongodb.MongoClient; import com.mongodb.client.model.changestream.ChangeStreamDocument; import com.mongodb.reactivestreams.client.MongoClients; @@ -83,6 +84,17 @@ public class ChangeStreamsTests { @SpringBootApplication(exclude = EmbeddedMongoAutoConfiguration.class) static class Config { + /** + * Configure {@link MongoClient} to enable + * {@link org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration}. + * + * @return the {@link MongoClient}. + */ + @Bean + MongoClient mongoClient() { + return replSet.getMongoClient(); + } + /** * Configure {@link SimpleMongoDbFactory} pointing to the embedded MongoDB connection. * diff --git a/mongodb/reactive/src/main/java/example/springdata/mongodb/people/ApplicationConfiguration.java b/mongodb/reactive/src/main/java/example/springdata/mongodb/people/ApplicationConfiguration.java index ea553584..da88d987 100644 --- a/mongodb/reactive/src/main/java/example/springdata/mongodb/people/ApplicationConfiguration.java +++ b/mongodb/reactive/src/main/java/example/springdata/mongodb/people/ApplicationConfiguration.java @@ -15,22 +15,9 @@ */ package example.springdata.mongodb.people; -import lombok.RequiredArgsConstructor; - -import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; -import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; -import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.env.Environment; -import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration; import org.springframework.data.mongodb.core.mapping.event.LoggingEventListener; -import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories; - -import com.mongodb.reactivestreams.client.MongoClient; -import com.mongodb.reactivestreams.client.MongoClients; /** * Simple configuration that registers a {@link LoggingEventListener} to demonstrate mapping behavior when streaming @@ -38,29 +25,11 @@ import com.mongodb.reactivestreams.client.MongoClients; * * @author Mark Paluch */ -@SpringBootApplication(exclude = { MongoAutoConfiguration.class, MongoDataAutoConfiguration.class }) -@EnableReactiveMongoRepositories -@AutoConfigureAfter(EmbeddedMongoAutoConfiguration.class) -@RequiredArgsConstructor -class ApplicationConfiguration extends AbstractReactiveMongoConfiguration { - - private final Environment environment; +@SpringBootApplication +class ApplicationConfiguration { @Bean public LoggingEventListener mongoEventListener() { return new LoggingEventListener(); } - - @Override - @Bean - @DependsOn("embeddedMongoServer") - public MongoClient reactiveMongoClient() { - int port = environment.getProperty("local.mongo.port", Integer.class); - return MongoClients.create(String.format("mongodb://localhost:%d", port)); - } - - @Override - protected String getDatabaseName() { - return "reactive"; - } }