mongodb - 使用 Spring Boot 的 MongoTemplate 自定义配置
问题描述
在使用 Spring Boot 应用程序(2.0.5)时,我希望更改 mongoTemplate 的 WriteResultChecking 属性。我找到了一种通过扩展 AbstractMongoConfiguration 的方法,如下所示。
我得到了同样的工作,但是我发现这种方法有点冒险。这么说是因为这种方法迫使我为
public MongoClient mongoClient() {
return new MongoClient(host, port);
}
现在 MongoClient 是维护与 MongoDB 连接的中心类,如果我被迫为此编写实现,那么我可能会错过 spring 框架所做的优化。
有人可以建议任何其他最佳方式来覆盖某些属性/行为而不必修补太多吗?
@Configuration
public class MyMongoConfigs extends AbstractMongoConfiguration {
@Value("${spring.data.mongodb.database}")
private String databaseName;
@Value("${spring.data.mongodb.host}")
private String host;
@Value("${spring.data.mongodb.port}")
private int port;
@Override
public MongoClient mongoClient() {
return new MongoClient(host, port);
}
@Override
protected String getDatabaseName() {
return databaseName;
}
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MongoTemplate myTemp = new MongoTemplate(mongoDbFactory(), mappingMongoConverter());
**myTemp.setWriteResultChecking(WriteResultChecking.EXCEPTION);**
return myTemp;
}
解决方案
你的方向是正确的。使用AbstractMongoConfiguration
您覆盖您需要自定义的配置,这是正确的方法。 AbstractMongoConfiguration
仍然是 Spring 提供的类,所以你不必担心优化,除非你弄乱了你的配置。
推荐阅读
- scrapy - Scrapy spider 不会始终使用 CloseSpider 扩展终止
- excel - 通过对每 3 列求和来更新运行总计
- string - Dart/Flutter:每隔 n 个字符拆分字符串?
- c - 数组中的项地址变大导致溢出
- swift - 从服务器调用最佳实践更新视图控制器
- python - RuntimeError:模型类 myapp.models.class 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中
- java - 我可以使用超类的类工厂静态方法创建子类实例吗?
- c++ - 为什么 WM_MOUSEWHEEL 会在 WH_GETMESSAGE 挂钩中触发,但不会在 WH_MOUSE 挂钩中触发?
- javascript - remove protocol property from WHATWG URL object
- mysql - 来自 MySQL 数据的记分牌