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 @@
-
+
+
+
+
+
+