数据库
新建两个数据库 firstDB 、secondDB

并添加用户 login
application.properties
在 application.properties 文件中配置
spring.data.mongodb.first.host=localhost
spring.data.mongodb.first.port=27017
spring.data.mongodb.first.database=firstDB
spring.data.mongodb.first.username=login
spring.data.mongodb.first.password=123456
spring.data.mongodb.second.host=localhost
spring.data.mongodb.second.port=27017
spring.data.mongodb.second.database=secondDB
spring.data.mongodb.second.username=login
spring.data.mongodb.second.password=123456
配置多数据源
package com.tcwong.mongodb.config;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
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.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class MongoTemplateConfig {
[@Primary](https://my.oschina.net/primary)
@Bean("firstMongoProperties")
@ConfigurationProperties(prefix = "spring.data.mongodb.first")
public MongoProperties firstMongoProperties() {
return new MongoProperties();
}
@Bean("secondMongoProperties")
@ConfigurationProperties(prefix = "spring.data.mongodb.second")
public MongoProperties secondMongoProperties() {
return new MongoProperties();
}
@Primary
@Bean(value = "firstMongoTemplate")
public MongoTemplate firstMongoTemplate(@Qualifier("firstMongoProperties") MongoProperties mongoProperties) {
return new MongoTemplate(mongoDbFactory(mongoProperties));
}
@Bean(value = "secondMongoTemplate")
public MongoTemplate secondMongoTemplate(@Qualifier("secondMongoProperties") MongoProperties mongoProperties) {
return new MongoTemplate(mongoDbFactory(mongoProperties));
}
private MongoDbFactory mongoDbFactory(MongoProperties mongoProperties) {
ServerAddress serverAddress = new ServerAddress(mongoProperties.getHost(), mongoProperties.getPort());
List<MongoCredential> credentialList = new ArrayList<>();
credentialList.add(MongoCredential.createScramSha1Credential(mongoProperties.getUsername()
, mongoProperties.getDatabase(), mongoProperties.getPassword()));
MongoClient mongoClient = new MongoClient(serverAddress,
credentialList,
new MongoClientOptions.Builder().build());
return new SimpleMongoDbFactory(mongoClient, mongoProperties.getDatabase());
}
}
测试
package com.tcwong.mongodb.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public class MongoTemplateController {
@Autowired
@Qualifier("firstMongoTemplate")
private MongoTemplate firstMongoTemplate;
@Autowired
@Qualifier("secondMongoTemplate")
private MongoTemplate secondMongoTemplate;
@GetMapping("/firstMongoTemplate")
public void firstTemplate() {
Map<Object, Object> map = new HashMap<>();
map.put("数据库", "firstMongoTemplate");
firstMongoTemplate.insert(map, "firstDB");
}
@GetMapping("/secondMongoTemplate")
public void secondTemplate() {
Map<Object, Object> map = new HashMap<>();
map.put("数据库", "secondMongoTemplate");
secondMongoTemplate.insert(map, "secondDB");
}
}
效果
firstDB 数据库

secondDB 数据库

《 完 》
谢谢大家持续关注TC谈

你们的每一个交流和【在看
】都是TC持续更新的动力
我是TC,可以叫我阿七,一个才华与美貌于一身的美男子




