Java Spring数据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

我最终想要实现的是,从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, 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
替换为用户有权访问的数据库的名称