yml文件
datasource:
mongodb:
hostPort: 10.130.41.24:30000
maxConnections: 100
minConnections: 20
username:
password:
Config類
public abstract class AbstractMongoConfig {
private String hostPort, username, password;
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 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, database, password.toCharArray()));
return new SimpleMongoDbFactory(new MongoClient(seeds, mongoCredentialList, mongoClientOptions), database);
}
abstract public MongoTemplate getMongoTemplate(String database) throws Exception;
}
Bean
@Configuration
@ConfigurationProperties(prefix = "datasource.mongodb")
public class MongoDBDataSourceConfig extends AbstractMongoConfig{
@Override
public MongoTemplate getMongoTemplate(String database) throws Exception {
return new MongoTemplate(mongoDbFactory(database));
}
}
使用的時候就可以手動注入庫名了
@Autowired
MongoDBDataSourceConfig mongoDBDataSourceConfig;
MongoTemplate mongoTemplate = mongoDBDataSourceConfig.getMongoTemplate(databaseName);