Spring Mongodb:如何使用 MongoClientFactoryBean 配置器 mongoDB
Spring Mongodb: How to configurer mongoDB with MongoClientFactoryBean
在Spring中配置MongoDB时,参考说:
像这样注册 Mongo数据库:
@Configuration
public class AppConfig {
/*
* Use the standard Mongo driver API to create a com.mongodb.Mongo instance.
*/
public @Bean Mongo mongo() throws UnknownHostException {
return new Mongo("localhost");
}
}
pollutes the code with the UnknownHostException checked exception. The use of the checked exception is not desirable as Java based bean metadata uses methods as a means to set object dependencies, making the calling code cluttered.
所以Spring提议
@Configuration
public class AppConfig {
/*
* Factory bean that creates the com.mongodb.Mongo instance
*/
public @Bean MongoFactoryBean mongo() {
MongoFactoryBean mongo = new MongoFactoryBean();
mongo.setHost("localhost");
return mongo;
}
}
但不幸的是,由于 Spring-Data-MongoDB 1.7 MongoFactoryBean 已被弃用并被 取代MongoClientFactoryBean.
所以
@Bean
public MongoClientFactoryBean mongoClientFactoryBean() {
MongoClientFactoryBean factoryBean = new MongoClientFactoryBean();
factoryBean.setHost("localhost");
return factoryBean;
}
然后是配置 MongoDbFactory 的时候了,它只有一个实现 SimpleMongoDbFactory。 SimpleMongoDbFactory 只有两个未弃用的初始化器,其中之一是 SimpleMongoDbFactory(MongoClient, DataBase)。
但是 MongoClientFactoryBean 只能 return 类型的 Mongo 而不是 Mongo客户.
那么,我是否遗漏了一些让这个纯 Spring 配置起作用的东西?
是的returns一个Mongo
:-(
但是随着 MongoClient
扩展 Mongo
无论如何都可以,只是 @Autowire
作为 Mongo
的 bean
@Autowired
private Mongo mongo;
那就用吧
MongoOperations mongoOps = new MongoTemplate(mongo, "databaseName");
你真的需要 SimpleMongoDbFactory
吗?参见 this post。
就我而言,我使用以下代码来创建 MongoTemplate
。我正在使用 MongoRespository
。因为它只需要 MongoTemplate
我只需要创建 MongoTemplate
bean。
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MongoClient mongoClient = new MongoClient("localhost");
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, "kyc_reader_test");
return new MongoTemplate(mongoDbFactory);
}
在我的配置文件中,我添加了
@EnableMongoRepositories(basePackages = "mongo.repository.package.name")
在Spring中配置MongoDB时,参考说:
像这样注册 Mongo数据库:
@Configuration
public class AppConfig {
/*
* Use the standard Mongo driver API to create a com.mongodb.Mongo instance.
*/
public @Bean Mongo mongo() throws UnknownHostException {
return new Mongo("localhost");
}
}
pollutes the code with the UnknownHostException checked exception. The use of the checked exception is not desirable as Java based bean metadata uses methods as a means to set object dependencies, making the calling code cluttered.
所以Spring提议
@Configuration
public class AppConfig {
/*
* Factory bean that creates the com.mongodb.Mongo instance
*/
public @Bean MongoFactoryBean mongo() {
MongoFactoryBean mongo = new MongoFactoryBean();
mongo.setHost("localhost");
return mongo;
}
}
但不幸的是,由于 Spring-Data-MongoDB 1.7 MongoFactoryBean 已被弃用并被 取代MongoClientFactoryBean.
所以
@Bean
public MongoClientFactoryBean mongoClientFactoryBean() {
MongoClientFactoryBean factoryBean = new MongoClientFactoryBean();
factoryBean.setHost("localhost");
return factoryBean;
}
然后是配置 MongoDbFactory 的时候了,它只有一个实现 SimpleMongoDbFactory。 SimpleMongoDbFactory 只有两个未弃用的初始化器,其中之一是 SimpleMongoDbFactory(MongoClient, DataBase)。 但是 MongoClientFactoryBean 只能 return 类型的 Mongo 而不是 Mongo客户.
那么,我是否遗漏了一些让这个纯 Spring 配置起作用的东西?
是的returns一个Mongo
:-(
但是随着 MongoClient
扩展 Mongo
无论如何都可以,只是 @Autowire
作为 Mongo
@Autowired
private Mongo mongo;
那就用吧
MongoOperations mongoOps = new MongoTemplate(mongo, "databaseName");
你真的需要 SimpleMongoDbFactory
吗?参见 this post。
就我而言,我使用以下代码来创建 MongoTemplate
。我正在使用 MongoRespository
。因为它只需要 MongoTemplate
我只需要创建 MongoTemplate
bean。
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MongoClient mongoClient = new MongoClient("localhost");
MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, "kyc_reader_test");
return new MongoTemplate(mongoDbFactory);
}
在我的配置文件中,我添加了
@EnableMongoRepositories(basePackages = "mongo.repository.package.name")