From fbeb8c966cf37fcc267ea061eb4a1823ff667c29 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 18 Aug 2014 14:57:32 +0100 Subject: [PATCH] Upgrade to Spring Data Evans The missing bean condition on the auto-configuration classes for Elasticsearch, Jpa, Mongo and Solr repositories have been tightened to look for ElasticsearchRepositoryFactoryBean, JapRepositoryFactoryBean, MonoRepositoryFactoryBean, and SolrRepositoryFactoryBean respectively. In Spring Data Evans, when there are multiple repository types on the classpath, a strict mode is entered to prevent the different repositories from trampling over each other. A side-effect of this is that for the Mongo domain types in the tests to be discovered they must be explicitly annotated with @Document. Closes gh-1338 --- .../ElasticsearchRepositoriesAutoConfiguration.java | 4 ++-- .../data/jpa/JpaRepositoriesAutoConfiguration.java | 4 ++-- .../data/mongo/MongoRepositoriesAutoConfiguration.java | 4 ++-- .../data/solr/SolrRepositoriesAutoConfiguration.java | 4 ++-- .../boot/autoconfigure/data/mongo/city/City.java | 5 +++-- .../boot/autoconfigure/data/mongo/country/Country.java | 5 +++-- spring-boot-dependencies/pom.xml | 2 +- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfiguration.java index 3d5bcc63b0c..bf77602a361 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfiguration.java @@ -25,7 +25,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; -import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; +import org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean; /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Elasticsearch @@ -39,7 +39,7 @@ import org.springframework.data.repository.core.support.RepositoryFactoryBeanSup @Configuration @ConditionalOnClass({ Client.class, ElasticsearchRepository.class }) @ConditionalOnProperty(prefix = "spring.data.elasticsearch.repositories", name = "enabled", havingValue = "true", matchIfMissing = true) -@ConditionalOnMissingBean(RepositoryFactoryBeanSupport.class) +@ConditionalOnMissingBean(ElasticsearchRepositoryFactoryBean.class) @Import(ElasticsearchRepositoriesAutoConfigureRegistrar.class) public class ElasticsearchRepositoriesAutoConfiguration { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/jpa/JpaRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/jpa/JpaRepositoriesAutoConfiguration.java index 983bea005d9..2410fe0541d 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/jpa/JpaRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/jpa/JpaRepositoriesAutoConfiguration.java @@ -31,7 +31,7 @@ import org.springframework.context.annotation.Import; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.data.jpa.repository.config.JpaRepositoryConfigExtension; -import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; +import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean; import org.springframework.data.web.PageableHandlerMethodArgumentResolver; import org.springframework.data.web.config.EnableSpringDataWebSupport; @@ -57,7 +57,7 @@ import org.springframework.data.web.config.EnableSpringDataWebSupport; @Configuration @ConditionalOnBean(DataSource.class) @ConditionalOnClass(JpaRepository.class) -@ConditionalOnMissingBean({ RepositoryFactoryBeanSupport.class, +@ConditionalOnMissingBean({ JpaRepositoryFactoryBean.class, JpaRepositoryConfigExtension.class }) @ConditionalOnProperty(prefix = "spring.data.jpa.repositories", name = "enabled", havingValue = "true", matchIfMissing = true) @Import(JpaRepositoriesAutoConfigureRegistrar.class) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java index 1a135c2df9f..b6544810a81 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java @@ -27,7 +27,7 @@ import org.springframework.context.annotation.Import; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.data.mongodb.repository.config.MongoRepositoryConfigurationExtension; -import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; +import org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean; import com.mongodb.Mongo; @@ -54,7 +54,7 @@ import com.mongodb.Mongo; */ @Configuration @ConditionalOnClass({ Mongo.class, MongoRepository.class }) -@ConditionalOnMissingBean({ RepositoryFactoryBeanSupport.class, +@ConditionalOnMissingBean({ MongoRepositoryFactoryBean.class, MongoRepositoryConfigurationExtension.class }) @ConditionalOnProperty(prefix = "spring.data.mongo.repositories", name = "enabled", havingValue = "true", matchIfMissing = true) @Import(MongoRepositoriesAutoConfigureRegistrar.class) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/solr/SolrRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/solr/SolrRepositoriesAutoConfiguration.java index 765f2fe8699..8d67119d63c 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/solr/SolrRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/solr/SolrRepositoriesAutoConfiguration.java @@ -22,9 +22,9 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; import org.springframework.data.solr.repository.SolrRepository; import org.springframework.data.solr.repository.config.SolrRepositoryConfigExtension; +import org.springframework.data.solr.repository.support.SolrRepositoryFactoryBean; /** * Enables auto configuration for Spring Data Solr repositories. @@ -45,7 +45,7 @@ import org.springframework.data.solr.repository.config.SolrRepositoryConfigExten */ @Configuration @ConditionalOnClass({ SolrServer.class, SolrRepository.class }) -@ConditionalOnMissingBean({ RepositoryFactoryBeanSupport.class, +@ConditionalOnMissingBean({ SolrRepositoryFactoryBean.class, SolrRepositoryConfigExtension.class }) @ConditionalOnProperty(prefix = "spring.data.solr.repositories", name = "enabled", havingValue = "true", matchIfMissing = true) @Import(SolrRepositoriesAutoConfigureRegistrar.class) diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/city/City.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/city/City.java index 9315b7b1403..b73e8962817 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/city/City.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/city/City.java @@ -19,11 +19,12 @@ package org.springframework.boot.autoconfigure.data.mongo.city; import java.io.Serializable; import javax.persistence.Column; -import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; -@Entity +import org.springframework.data.mongodb.core.mapping.Document; + +@Document public class City implements Serializable { private static final long serialVersionUID = 1L; diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/country/Country.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/country/Country.java index 79102608624..2700efc4afc 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/country/Country.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/country/Country.java @@ -19,11 +19,12 @@ package org.springframework.boot.autoconfigure.data.mongo.country; import java.io.Serializable; import javax.persistence.Column; -import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; -@Entity +import org.springframework.data.mongodb.core.mapping.Document; + +@Document public class Country implements Serializable { private static final long serialVersionUID = 1L; diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index e794ecb3c27..d71c1b588ca 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -107,7 +107,7 @@ 1.4.0.M1 1.1.0.RELEASE 3.0.1.RELEASE - Dijkstra-SR4 + Evans-RELEASE 0.16.0.RELEASE 4.1.0.M1 1.2.0.RELEASE