SpringBoot2.0 配置mongodb双数据源两种连接方式

一、使用database、host、port、username、password 连接方式

1、自定义连接相关信息 application.yml

spring:
  data:
    mongodb:
      mcdr:
        database: mcdr
        host: 10.188.188.100
        port: 27017
        username:
        password:
      mdc:
        database: mdc
        host: 10.188.188.104
        port: 27103
        username: mdc
        password: mdc

2、mongo配置抽象类

import com.mongodb.MongoClientURI;
import lombok.Data;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

@Data
public abstract class AbstractMongoConfig {

    private String database;
    private String host;
    private int port;
    private String username;
    private String password;


    public MongoDbFactory mongoDbFactory() throws Exception {
        if ("mcdr".equals(database)) {
            //无认证的初始化方法
            return new SimpleMongoDbFactory(new MongoClient(host, port), database);
        }

        //有认证的初始化方法
        ServerAddress serverAddress = new ServerAddress(host, port);
         List<MongoCredential> mongoCredentialList = new ArrayList<>();
         mongoCredentialList.add(MongoCredential.createCredential(username, database,
         password.toCharArray()));
         return new SimpleMongoDbFactory(new MongoClient(serverAddress, mongoCredentialList), database);
    }

    abstract public MongoTemplate getMongoTemplate() throws Exception;
}

3、双数据源配置

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.core.MongoTemplate;
/**
 * mongo主数据源(mcdr)
 * prefix需要与配置文件中mcdr数据源的配置前缀对应
 *
 * @author sxp
 * @date 2019/07/11
 */
@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.mcdr")
public class McdrMongoConfig extends AbstractMongoConfig {

    @Primary
    @Override
    @Bean(name = "mongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoTemplate;
/**
 * mongo次数据源(mdc)
 * prefix需要与配置文件中mdc数据源的配置前缀对应
 *
 * @author sxp
 * @date 2019/07/11
 */
@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.mdc")
public class MdcMongoConfig extends AbstractMongoConfig {

    @Override
    @Bean(name = "mdcMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
}

二、使用uri连接方式

1、自定义连接相关信息 application.yml

spring:
  data:
    mongodb:
      mcdr:
        uri: mongodb://10.188.188.100:27017/mcdr
      mdc:
        uri: mongodb://mdc:mdc@10.188.188.104:27103/mdc

2、mongo配置抽象类

import com.mongodb.MongoClientURI;
import lombok.Data;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

@Data
public abstract class AbstractMongoConfig {

    private String uri;

    public MongoDbFactory mongoDbFactory() throws Exception {
        return new SimpleMongoDbFactory(new MongoClientURI(uri));
    }

    abstract public MongoTemplate getMongoTemplate() throws Exception;
}

3、双数据源配置与上面一致

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值