如何解决Spring data-MongoDb手动配置
我最后要实现的是,从java类连接到mongo db,此配置应同时适用于MongoTemplate和MongoRepository
spring boot通过以下属性直接通过application.properties文件提供mongodb的配置
spring.data.mongodb.database=delivery
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.password=delivery-user
spring.data.mongodb.username=delivery-user
代替这种方式,我需要使用java类本身连接到db, 这是因为我需要在属性文件中加密密码,然后从java类解密 据我了解,我尝试在下面创建一个类
@Configuration
public class MongoConfig extends AbstractMongoClientConfiguration {
@Override
public MongoClient mongoClient() {
String username = "delivery-user";
String password = "delivery-user";
String port = "27017";
String host = "localhost";
String db = "salesdata";
//have also tried by passing db name in conString
String conString = "mongodb://" + username + ":" + password + "@" + host + ":" + port+"/?authSource=admin" ;
MongoClient mClient = MongoClients.create(conString);
return mClient;
}
@Override
protected String getDatabaseName() {
return "delivery";
}
@Bean
@Override
public MongoTemplate mongoTemplate() {
MongoTemplate mt = new MongoTemplate(mongoClient(),getDatabaseName());
return mt;
}
}
运行此应用程序时出现此错误
Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,userName='delivery-user',source='admin',password=<hidden>,mechanismProperties={}}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,mechanismProperties={}}
解决方法
在字符串末尾指定数据库名称并删除“ authSource
”将解决此问题。
同时指定“ authSource=targetDBname
”似乎可行。
连接字符串示例
String conString = "mongodb://" + username + ":" + password + "@" + host + ":" + port+"/dbName";
将dbName
替换为用户可以访问的db名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。