min*_*pro 6 spring mongodb spring-data
在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");
}
}
Run Code Online (Sandbox Code Playgroud)
使用UnknownHostException检查异常来污染代码.使用checked异常是不可取的,因为基于Java的bean元数据使用方法作为设置对象依赖性的手段,使调用代码变得混乱.
所以春天提出
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,自从Spring-Data-MongoDB 1.7 MongoFactoryBean被弃用并被MongoClientFactoryBean取代.
所以
@Bean
public MongoClientFactoryBean mongoClientFactoryBean() {
MongoClientFactoryBean factoryBean = new MongoClientFactoryBean();
factoryBean.setHost("localhost");
return factoryBean;
}
Run Code Online (Sandbox Code Playgroud)
然后是时候配置只有一个实现SimpleMongoDbFactory的 MongoDbFactory .SimpleMongoDbFactory只有两个不推荐使用的初始化程序,其中一个是SimpleMongoDbFactory(MongoClient,DataBase).但是MongoClientFactoryBean只能返回Mongo的类型而不是MongoClient.
那么,我是否遗漏了一些东西来使这个纯粹的Spring配置工作?
是的,它返回一个Mongo
:-(
但随着MongoClient
扩展Mongo
,无论如何都可以,只是@Autowire
作为 Mongo 的 bean
@Autowired
private Mongo mongo;
Run Code Online (Sandbox Code Playgroud)
然后使用它
MongoOperations mongoOps = new MongoTemplate(mongo, "databaseName");
Run Code Online (Sandbox Code Playgroud)
你真的需要SimpleMongoDbFactory
吗?看到这个帖子。
归档时间: |
|
查看次数: |
7062 次 |
最近记录: |