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配置抽象类

@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 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、双数据源配置

/**
 * 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());
    }
}
/**
 * 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:[email protected]:27103/mdc

2、mongo配置抽象类

@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、双数据源配置与上面一致

你可能感兴趣的:(MongoDB学习笔记)