java - 使用 Java Spring 连接到 MongoDB 3.0

标签 java spring mongodb authentication

我在使用 Spring 通过凭据访问 MongoDB 时遇到问题。 虽然没有凭据,但它就像一个魅力,使用它们只是失败了

    Failed to authenticate to database [yourdatabase], username = [yourusername], password = [x******z] 

这一定是因为您可以在 http://docs.mongodb.org/manual/core/authentication/ 中阅读到新的身份验证默认值。

Changed in version 3.0: SCRAM-SHA-1 is the default mechanism for MongoDB versions beginning with the 3.0 series.

问题: 有人找到了使用 Spring 凭据的方法吗?你使用了哪个版本的 spring-data-mongodb

最佳答案

经过大量尝试和阅读,我找到了一种让 MongoDB 3.0 与身份验证一起工作的方法。

这是 MongoDB 3.0 的全新安装,不涉及升级。

我使用了这些 maven 依赖项:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.6.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.0.0</version>
</dependency>

作为 parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.2.RELEASE</version>
</parent>

然后在我的配置文件中

/**
 * DB connection Factory
 * 
 * @return a ready to use MongoDbFactory
 */
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {

    // Set credentials      
    MongoCredential credential = MongoCredential.createCredential(mongoUser, databaseName, mongoPass.toCharArray());
    ServerAddress serverAddress = new ServerAddress(mongoHost, mongoPort);

    // Mongo Client
    MongoClient mongoClient = new MongoClient(serverAddress,Arrays.asList(credential)); 

    // Mongo DB Factory
    SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(
            mongoClient, databaseName);

    return simpleMongoDbFactory;
}

/**
 * Template ready to use to operate on the database
 * 
 * @return Mongo Template ready to use
 */
@Bean
public MongoTemplate mongoTemplate() throws Exception {
    return new MongoTemplate(mongoDbFactory());
}

最后,只要你可以访问 MongoTemplate bean,你就可以做

mongoTemplate.insert(objectToStore, collectionName);

关于java - 使用 Java Spring 连接到 MongoDB 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28958789/

相关文章:

java - Eclipse RCP : Actions VS Commands

java - 使用字符串文字创建字符串常量池的编译器行为

java - Sesame NativeRDF 写入/tmp

java - 复杂对象的@ModelAttribute

java - 获取 UnmarshallingFailureException 预期的元素是(无)

mongodb - 在提交的 docker 镜像中找不到在 docker 容器中创建的数据库和集合

MongoDB单向复制

java - 为什么我尝试在 Spring Boot 应用程序上配置数据库连接时会出现此异常?创建名称为 'dataSource' 的 bean 时出错

java - spring服务层的一些方法如何分解

node.js - 在数据库回调上重新生成 session