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;复制代码



转载于:https://juejin.im/post/5cf73090f265da1b7b317887

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值