Search code examples
javamongodbspring-mvcsharding

How to set MongoDB ReadPreference in Spring MVC's contextConfigLocation


I am connecting to a MongoDB sharding server via mongodb java driver in Spring MVC. I am using the following versions:

  • spring-webmvc-3.2.1.RELEASE
  • mongo-java-driver/2.10.0/mongo-java-driver-2.10.0
  • spring-data-mongodb-1.2.0.RELEASE

My Mongo options are set in the contextConfigLocation file mvc-dispatcher-servlet.xml

<mongo:mongo host="mongo.sample.com" port="30000">
     <mongo:options auto-connect-retry="true"
                    slave-ok="true"/>
</mongo:mongo>

It works pretty well, but the slave-ok is deprecated by come.MongoDB.ReadPreference. I just wonder if there is any way to set the readPreference for Spring MVC in the contextConfiLocation file.


Solution

  • Expanding @Trisha's response in to an answer: "Do it in MongoTemplate programmatically" by setting the ReadPreference to SECONDARY.

    MongoTemplate template = new MongoTemplate(...);
    template.setReadPreference(com.mongodb.ReadPreference.SECONDARY);