升级了springboot2.2.8,新的mondob3.11.2驱动好多包标记为删除 如:
MongoClientFactoryBean、SimpleMongoDbFactory
基于3.11.2集成,重新自定义配置 代码如下f:
package com.sendcloud.api.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "mongo")
public class MongoConfigProperties {
private String replicaSet;
private String database;
private String userName;
private String password;
private boolean enable;
private String authDB;
private long maxWaitTime;
//还可以设置连接池、socket相关属性
public long getMaxWaitTime() {
return maxWaitTime;
}
public void setMaxWaitTime(long maxWaitTime) {
this.maxWaitTime = maxWaitTime;
}
public String getReplicaSet() {
return replicaSet;
}
public void setReplicaSet(String replicaSet) {
this.replicaSet = replicaSet;
}
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
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 boolean isEnable() {
return enable;
}
public void setEnable(boolean enable) {
this.enable = enable;
}
public String getAuthDB() {
return authDB;
}
public void setAuthDB(String authDB) {
this.authDB = authDB;
}
}
package com.sendcloud.api.config;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDbFactory;
import org.springframework.data.redis.connection.RedisNode;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.connection.ConnectionPoolSettings;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
public class ApplicationConfig {
@Autowired
MongoConfigProperties mongoConfigProperties;
@Bean(name = "mongoTemplate")
@ConditionalOnExpression("${mongo.enable}")
public MongoTemplate mongoTemplate() throws Exception {
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
return mongoTemplate;
}
@Bean
public MongoDbFactory mongoDbFactory() {
List<ServerAddress> serverAddressList = new ArrayList<>();
String[] replicaSet = mongoConfigProperties.getReplicaSet().split(",");
for (String s : replicaSet) {
String host = s.substring(0, s.lastIndexOf(":"));
String port = s.substring(s.lastIndexOf(":") + 1);
serverAddressList.add(new ServerAddress(host, Integer.parseInt(port)));
}
// 连接认证,如果设置了用户名和密码的话
MongoClientSettings settings = null;
ConnectionPoolSettings poolSetting=ConnectionPoolSettings.builder().
maxWaitTime(mongoConfigProperties.getMaxWaitTime(), TimeUnit.MILLISECONDS).build();
if(StringUtils.isNotBlank(mongoConfigProperties.getUserName())) {
MongoCredential credential = MongoCredential.createScramSha1Credential(mongoConfigProperties.getUserName(),
mongoConfigProperties.getAuthDB(), mongoConfigProperties.getPassword().toCharArray());
settings = MongoClientSettings.builder()
.credential(credential)
.applyToConnectionPoolSettings(builder->builder.applySettings(poolSetting))
.applyToClusterSettings(builder -> builder.hosts(serverAddressList)).build();
}else {
settings = MongoClientSettings.builder().applyToConnectionPoolSettings(builder->builder.applySettings(poolSetting))
.applyToClusterSettings(builder -> builder.hosts(serverAddressList)).build();
}
MongoClient mongoClient = MongoClients.create(settings);
// 创建MongoDbFactory
SimpleMongoClientDbFactory factory = new SimpleMongoClientDbFactory(mongoClient,
mongoConfigProperties.getDatabase());
return factory;
}
}
https://web.sendcloud.net