首先,分为两种情况,测试环境不用账号密码,正式环境需要,所以需要灵活性.
配置环境中username和password可注释掉,注释掉表示不需要账号密码
mongodb.default.uri=127.0.0.1:27017/dbName1
#mongodb.default.username=admin
#mongodb.default.password=123456
mongodb.pay.uri=127.0.0.1:27017/dbName2
#mongodb.pay.username=admin
#mongodb.pay.password=123456
其次,配置MongoConfig,根据账号密码有无进行拼接
@Data
public abstract class AbstractMongoDbConfig
{
private String uri;
private String username;
private String password;
public MongoDatabaseFactory mongoDatabaseFactory() {
String connectionString;
if (StringUtils.isBlank(username)&&StringUtils.isBlank(password)){
connectionString = "mongodb://"+uri;
}else {
connectionString = "mongodb://" + username + ":" + password+ "@"+ uri;
}
return new SimpleMongoClientDatabaseFactory(connectionString);
}
public abstract MongoTemplate getMongoTemplate();
}
然后配置两个Bean,方便使用
第一个默认,Bean名就叫mongoTemplate
@Configuration
@ConfigurationProperties("mongodb.default")
public class MongoDbConfig extends AbstractMongoDbConfig
{
@Bean(name = "mongoTemplate")
@Override
public MongoTemplate getMongoTemplate() {
return new MongoTemplate(mongoDatabaseFactory());
}
}
第二个自定义,我写为mongoTemplatePay
@Configuration
@ConfigurationProperties("mongodb.pay")
public class MongoDbConfigPay extends AbstractMongoDbConfig
{
@Bean(name = "mongoTemplatePay")
@Override
public MongoTemplate getMongoTemplate() {
return new MongoTemplate(mongoDatabaseFactory());
}
}
两个的引用方法如下
@Resource
private MongoTemplate mongoTemplate;
@Resource(name="mongoTemplatePay")
private MongoTemplate mongoTemplatePay;
好像也可以只用一个uri,配置的时候自己拼接字符串emmm
本文参考自Spring boot链接多个mongodb数据库_springboot配置多个mongodb_攻城狮狮的博客-CSDN博客