我尝试使用 spring 连接到 mongohq。我从heroku获得了一些信息,但是在连接该代码MongoURI
类时已弃用。我用过spring-data-mongodb
版本1.2.0.RELEASE
。和mongo-java-driver - 2.11.0
谁能告诉如何使用spring连接到mongohq或mongolab
听说是密码。。
@Configuration
public class SpringConfig {
@Bean
public DB getDb() throws UnknownHostException, MongoException {
String uri="mongodb://user:password@id.mongolab.com:53178/db";
MongoClientURI mongoClientURI=new MongoClientURI(uri);
MongoClient mongoClient=new MongoClient(mongoClientURI);
DB db=mongoClient.getDB(mongoClientURI.getDatabase());
db.authenticate(mongoClientURI.getUsername(),mongoClientURI.getPassword());
return db;
}
}
如果您使用的是 Spring Boot,则“MongoProperties”类只是在等待外部配置:
使用“heroku config”,您可以看到已经定义的属性 - 如果将 MongoLab 添加到您的应用程序中,将会有一个“MONGOLAB_URI”。
只需定义:heroku config:set spring.data.mongodb.uri=< MONGOLAB_URI >
。完毕。
公共类 MongoURI 扩展对象
表示可用于创建 Mongo 实例的 URI。URI 描述了要使用的主机和选项。
此类已被 MongoClientURI 取代,并且可能在未来的版本中被弃用。
所以MongoClientURI是你的答案
如果您将 mongodb 与Spring Data Mongodb 一起使用,则可以使用http://docs.spring.io/spring-data/data-mongo/docs/1.4.1.RELEASE/reference/html/mongo.core中描述的配置。 html#mongo.mongo-db-factory-java
它最终看起来像:
@Configuration
public class MongoHQConfiguration {
public @Bean MongoDbFactory mongoDbFactory() throws MongoException, UnknownHostException {
return new SimpleMongoDbFactory(new MongoURI(System.getenv("MONGOHQ_URL")));
}
public @Bean MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
}