在Spring中配置MongoDB时,参考sais:
像这样注册MongoDB:
@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");
}
}
使用UnknownHostException检查异常来污染代码 . 使用checked异常是不可取的,因为基于Java的bean元数据使用方法作为设置对象依赖性的手段,使调用代码变得混乱 .
所以 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 只能返回 Mongo 而不是 MongoClient 的类型 .
那么,我是否遗漏了一些东西来使这个纯粹的Spring配置工作?
2 回答
是的它返回
Mongo
:-(但是
MongoClient
延伸到Mongo
无论如何都会好的,只是@Autowire
beans 子作为Mongo然后使用它
你真的需要
SimpleMongoDbFactory
吗?见this post .就我而言,我正在使用以下代码创建
MongoTemplate
. 我正在使用MongoRespository
. 因为它只需要MongoTemplate
我只需要创建MongoTemplate
bean .在我的配置文件中,我添加了
@EnableMongoRepositories(basePackages = "mongo.repository.package.name")