多个数据源Mongo连接

匿名 (未验证) 提交于 2019-12-02 23:55:01

MongoDB :
https://my.oschina.net/u/3452433/blog/2999501
多个数据源Mongo连接:
https://juejin.im/post/5cf73090f265da1b7b317887
文档:
https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#mapping-usage

 

 

 

SpringBoot 配置多个MongoTemplate

 

前言:

Spring Boot支持应用程序中创建多个Mongo模板连接到两个不同的mongo服务器。

创建多个Mongo连接

application.properties/yml

properties: primary.mongodb.host=<primary_mongodb_host> primary.mongodb.port=<primary_mongodb_port> primary.mongodb.database=<primary_mongodb_database>   secondary.mongodb.host=<secondary_mongodb_host> secondary.mongodb.port=<secondary_mongodb_port> secondary.mongodb.database=<secondary_mongodb_database>  yml: primary:     mongodb:         host:<primary_mongodb_host>         port:<primary_mongodb_port>         database:<primary_mongodb_database>  secondary:     mongodb:         host:<secondary_mongodb_host>         port:<primary_mongodb_port>         database:<secondary_mongodb_database> 复制代码

创建配置类:

public abstract class AbstractMongoConfig {     //mongodb配置属性         private String host, database;     private int port;     //Setter methods go here..          /*            * 创建MongoDBFactory的方法      * 两个MongoDB连接共用          */     public MongoDbFactory mongoDbFactory() throws Exception {         return new SimpleMongoDbFactory(new MongoClient(host, port), database);     }     /*           * Factory method to create the MongoTemplate           */     abstract public MongoTemplate getMongoTemplate() throws Exception; }复制代码

连接配置:

//Master-MongoTemplate @Configuration   @ConfigurationProperties(prefix = "primary.mongodb") //前缀指向 public class CommonMongoConfig extends AbstractMongoConfig {     /**      * MongoTemplate实现      * @Bean为创建的mongotemplate实例提供一个名称(primarymongotemplate)      * @Primary 设为默认      */     @Primary     @Override     public @Bean(name = "primaryMongoTemplate") MongoTemplate getMongoTemplate() throws Exception {         return new MongoTemplate(mongoDbFactory());     } }复制代码
// Slave-mongoTempalte @Configuration  class @ConfigurationProperties(prefix = "secondary.mongodb") //前缀映射 public class SecondaryMongoConfig extends AbstractMongoConfig {          @Override public @Bean(name = "secondaryMongoTemplate")     MongoTemplate getMongoTemplate() throws Exception {         return new MongoTemplate(mongoDbFactory());     } }复制代码

使用

//Using MongoTemplate for primary database @Autowired @Qualifier(value = "primaryMongoTemplate") //primarymongotemplate为默认的mongotemplate protected MongoTemplate mongoTemplate;   //Using mongoTemplate for secondary database @Autowired @Qualifier(value = "secondaryMongoTemplate") protected MongoTemplate mongoTemplate;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!