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