springboot连接使用monggoDB复制集
配置部分:
url连接格式:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb:// 前缀,代表这是一个Connection String
me:password@如果启用了鉴权,需要指定用户密码
hostX:portX 复制集成员的ip:port信息,多个成员以逗号分割
/database 鉴权时,用户帐号所属的数据库
?options 指定额外的连接选项
示例:mongodb://admin:pass%40123@192.168.0.31:27017,192.168.0.32:27017,192.168.0.33:27017/?replicaSet=myrs&database=admin
注意如果有仲裁者角色,此处不应进行配置.
密码中的特殊字符@需要转义(否则会报错),如此处为encodeURIComponent("pass@123")
Yml配置格式示例:
代码使示例:
@Configuration
public class MongoConfig{
@Value("${spring.data.mongodb.database}")
private String database;
@Value("${spring.data.mongodb.uri}")
private String uri;
@Bean
public MongoMappingContext mappingContext() {
return new MongoMappingContext();
}
@Bean
public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory, MongoMappingContext mappingContext) {
MappingMongoConverter converter= new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory),
mappingContext);
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
MongoTemplate mongoTemplate= new MongoTemplate(mongoDbFactory, converter);
return mongoTemplate;
}
@Bean
public MongoClient getMongoClient(){
return MongoClients.create(uri);
}
@Bean
public GridFSBucket getgridFsBucket(MongoClient mongoClient) {
MongoDatabase mongoDatabase= mongoClient.getDatabase(database);
GridFSBucket gridFsBucket= GridFSBuckets.create(mongoDatabase);
return gridFsBucket;
}
}
错误用法:
一旦31节点发生奔溃或切换为从节点,写操作将会有问题。
monggoDB复制集搭建过程见mongoDB复制集搭建