Java Spring数据MongoDb手动配置
我最终想要实现的是,从java类连接到mongo db,这种配置应该同时适用于MongoTemplate和MongoRepository spring boot通过下面的属性直接通过application.properties文件提供mongodb的配置Java Spring数据MongoDb手动配置,java,spring,spring-boot,spring-data-jpa,spring-data-mongodb,Java,Spring,Spring Boot,Spring Data Jpa,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.mongod
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, userName='delivery-user', source='admin', password=<hidden>, mechanismProperties={}}
验证MongoCredential的异常{mechanism=SCRAM-SHA-1,userName='delivery-user',source='admin',password=,mechanismProperties={};嵌套的异常是com.mongodb.MongoSecurityException:验证MongoCredential{mechanism=SCRAM-SHA-1,userName='delivery-user',source='admin',password=,mechanismProperties={}的异常
用户名和密码正确无误,用户还可以访问“delivery”db在字符串末尾指定db名称并删除“
authSource
”将解决此问题。
另外,指定“authSource=targetDBname
”似乎也在起作用。
工作连接字符串的示例
String conString = "mongodb://" + username + ":" + password + "@" + host + ":" + port+"/dbName";
将dbName
替换为用户有权访问的数据库的名称