我在使用 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/