我们正在尝试为Spring Data Mongo
设置自己的转换器,但遇到了问题。
看起来Spring从来没有在CustomConversions上调用registerConvertersIn
,因此我们通过overriden AbstractMongoConfiguration#customConversions
添加的自定义转换器从来没有成为转换的一部分。
我们使用的是Spring Data Mongo 1.6.3,但似乎1.8.0也有问题(我检查了对CustomConversions#registerConvertersIn
的调用,没有发现任何问题)。
我可以通过在自定义的MappingMongoConverter
中调用CustomConversions#registerConvertersIn
来解决这个问题,如下所示:
class MongoConfig extends AbstractMongoConfiguration {
@Bean
@Override
public MappingMongoConverter mappingMongoConverter() throws Exception {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory());
MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext()) {
@Override
public void setCustomConversions(CustomConversions conversions) {
super.setCustomConversions(conversions);
conversions.registerConvertersIn(conversionService);
}
};
converter.setCustomConversions(customConversions());
return converter;
}
}
这是一个bug还是我们做错了什么?
找到了另一个工作周围:https://stackoverflow.com/a/14369998/4567261
4条答案
按热度按时间5lhxktic1#
在Sping Boot 2.x中,它就像创建一个注册所有转换器的注册bean一样简单:
然后创建转换器类:
oxf4rvwz2#
除了这个我什么都不管用。
在设置
mongoTemplate
时,我们需要告诉mongo db使用自定义转换:点击此链接了解更多详情:
htrmnn0y3#
我花了一个小时才弄清楚在spring data mongo的最新版本中,应该使用
org.bson.Document
而不是com.mongodb.BasicDBObject
。下面是一个例子:cdmah0mi4#
你是否用
@Configuration
注解了你的MongoConfig
类?您的类MongoConfig需要由Spring BeanFactory管理,以自动调用回调
afterPropertiesSet()
(最初调用conversions.registerConvertersIn(conversionService)
)如果您没有注解配置bean,则需要自己调用
afterPropertiesSet()