JAVA的mongoDB双数据源配置
最近的项目里有这个需求所以就研究看下怎么配置mongo双数据源,配置其实也很简单(项目框架为springMVC)
1.首先在mongo配置文件中配置两套mongo数据源
<mongo:mongo-client id="mongoClient" host="${mongo.host}" port="${mongo.port}" credentials="${mongo.username}:${mongo.password}@${mongo.dbname}">
<mongo:client-options write-concern="SAFE"
connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"/>
</mongo:mongo-client>
<mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbname}" mongo-ref="mongoClient"/>
<mongo:mongo-client id="mongoClient1" host="${mongo.host}" port="${second.mongo.port}" credentials="${second.mongo.username}:${second.mongo.password}@${second.mongo.dbname}">
<mongo:client-options write-concern="SAFE"
connections-per-host="${second.mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${second.mongo.connectTimeout}"
max-wait-time="${second.mongo.maxWaitTime}"
socket-keep-alive="${second.mongo.socketKeepAlive}"
socket-timeout="${second.mongo.socketTimeout}"/>
</mongo:mongo-client>
<mongo:db-factory id="mongoDbFactory1" dbname="${second.mongo.dbname}" mongo-ref="mongoClient1"/>
2.上述配置中所涉及到的参数配置(两套配置参数)
#MongoDB conf1
mongo.dbname=mongof
mongo.host=127.0.0.1
mongo.port=27017
mongo.username=123456
mongo.password=123456
mongo.connectionsPerHost=8
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=1500
mongo.maxWaitTime=1500
mongo.socketKeepAlive= true
mongo.socketTimeout=1500
#MongoDB conf2
second.mongo.dbname=mongot
second.mongo.host=127.0.0.1
second.mongo.port=27017
second.mongo.username=123456
second.mongo.password=123456
second.mongo.connectionsPerHost=8
second.mongo.threadsAllowedToBlockForConnectionMultiplier=4
second.mongo.connectTimeout=1500
second.mongo.maxWaitTime=1500
second.mongo.socketKeepAlive= true
second.mongo.socketTimeout=1500
3.在需要对mongo做操作的地方进行引用(用到@Qualifier注解)
/**
* 第一套mongo数据源template
*/
@Autowired
@Qualifier("mongoTemplate")
private MongoTemplate mongoTemplate;
/**
* 第二套mongo数据源template
*/
@Autowired
@Qualifier("mongoTemplate1")
private MongoTemplate mongoTemplate1;
//下面代码就可以通过对应的MongoTemplate对Mongo数据进行增删改查操作了