yml文件配置,配置MongoDB地址、用戶名、密碼、權限、最大連接數、最小連接數,集羣則使用逗號分隔
datasource:
mongodb:
hostPort: 10.136.38.24:30000
maxConnections: 100
minConnections: 20
username:
password:
admin:
Config類
public abstract class AbstractMongoConfig {
private String hostPort, username, password,admin;
private int maxConnections, minConnections;
public String getHostPort() {
return hostPort;
}
public void setHostPort(String hostPort) {
this.hostPort = hostPort;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getMaxConnections() {
return maxConnections;
}
public void setMaxConnections(int maxConnections) {
this.maxConnections = maxConnections;
}
public int getMinConnections() {
return minConnections;
}
public void setMinConnections(int minConnections) {
this.minConnections = minConnections;
}
public String getAdmin() {
return admin;
}
public void setAdmin(String admin) {
this.admin = admin;
}
public MongoDbFactory mongoDbFactory(String database) throws Exception {
List<ServerAddress> seeds = new ArrayList<>();
String[] hostPorts = hostPort.split(",");
for(int i = 0 ; i < hostPorts.length;i++){
String[] hps = hostPorts[i].split(":");
ServerAddress serverAddress = new ServerAddress(hps[0], Integer.valueOf(hps[1]));
seeds.add(serverAddress);
}
//配置連接數
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
builder.connectionsPerHost(maxConnections);
builder.minConnectionsPerHost(minConnections);
MongoClientOptions mongoClientOptions = builder.build();
if(StringUtils.isEmpty(username) || StringUtils.isEmpty(password)){
return new SimpleMongoDbFactory(new MongoClient(seeds, mongoClientOptions), database);
}
List<MongoCredential> mongoCredentialList = new ArrayList<>();
mongoCredentialList.add(MongoCredential.createCredential(username, admin, password.toCharArray()));
return new SimpleMongoDbFactory(new MongoClient(seeds, mongoCredentialList, mongoClientOptions), database);
}
abstract public MongoTemplate getMongoTemplate(String database) throws Exception;
}
MongoDB連接Bean,加載yml文件
@Configuration
@ConfigurationProperties(prefix = "datasource.mongodb")
public class MongoDBDataSourceConfig extends AbstractMongoConfig{
@Override
public MongoTemplate getMongoTemplate(String database) throws Exception {
return new MongoTemplate(mongoDbFactory(database));
}
}
使用的時候可以把數據庫名稱作爲參數傳入,獲取mongo連接
@Autowired
MongoDBDataSourceConfig mongoDBDataSourceConfig;
MongoTemplate mongoTemplate = mongoDBDataSourceConfig.getMongoTemplate(databaseName);
pom.xml文件添加MongoDB依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>