diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 11960330b4..0120c4d60e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -806,9 +806,7 @@ protected void ensureNotIterable(Object o) { * @param collection */ protected void prepareCollection(DBCollection collection) { - if (this.readPreference != null) { - collection.setReadPreference(readPreference); - } + collection.setReadPreference(readPreference); } /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index e6d2bd0495..c2949144b9 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -47,6 +47,7 @@ import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.convert.converter.Converter; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataIntegrityViolationException; @@ -122,6 +123,9 @@ public class MongoTemplateTests { .parse("2.8"); @Autowired MongoTemplate template; + @Autowired @Qualifier("mongoTemplateReadFromSecondary") MongoTemplate mongoTemplateReadFromSecondary; + + @Autowired MongoDbFactory factory; MongoTemplate mappingTemplate; @@ -3442,6 +3446,23 @@ public void shouldFetchMapOfLazyReferencesCorrectly() { assertThat(target.lazyDbRefAnnotatedMap.values(), contains(two, one)); } + /** + * @see DATAMONGO-1061 + */ + @Test + public void multipleTemplates() throws Exception { + + Person person = new Person("Bogdan Apetrei"); + person.setAge(31); + template.insert(person); + + mongoTemplateReadFromSecondary.find(new Query(Criteria.where("_id").is(person.getId())), Person.class); + assertThat(mongoTemplateReadFromSecondary.getDb().getCollection("person").getReadPreference(),is(ReadPreference.secondary())); + + template.find(new Query(Criteria.where("_id").is(person.getId())), Person.class); + assertThat(template.getDb().getCollection("person").getReadPreference(), is(ReadPreference.primary())); + } + static class TypeWithNumbers { @Id String id; diff --git a/spring-data-mongodb/src/test/resources/infrastructure.xml b/spring-data-mongodb/src/test/resources/infrastructure.xml index 2cd73b7bd7..610722233d 100644 --- a/spring-data-mongodb/src/test/resources/infrastructure.xml +++ b/spring-data-mongodb/src/test/resources/infrastructure.xml @@ -13,8 +13,13 @@ - + + + + + +