【发布时间】:2016-03-16 17:13:07
【问题描述】:
我们正在尝试为Spring Data Mongo 设置我们自己的转换器,但遇到了问题。
似乎 Spring 从未在 CustomConversions 上调用 registerConvertersIn,因此我们通过覆盖 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;
}
}
这是一个错误还是我们做错了什么?
找到另一个解决方法: https://stackoverflow.com/a/14369998/4567261
【问题讨论】:
-
似乎是在 MappingMongoConverter 上调用 afterPropertiesSet 的更好方法。 stackoverflow.com/questions/13780692/… 目前还不清楚为什么 Spring Data Mongo 本身不能自动完成。
标签: java spring mongodb spring-data-mongodb mongodb-java