在Spring Data Mongo中设置自定义转换器 [英] Setup custom converters in Spring Data Mongo
问题描述
我们正在尝试为Spring Data Mongo
设置我们自己的转换器,并遇到问题.
We are trying to setup our own Converters for Spring Data Mongo
and having problems with it.
看起来像Spring从未在CustomConversions上调用registerConvertersIn
,因此通过覆盖的AbstractMongoConfiguration#customConversions
添加的自定义转换器永远不会成为转换的一部分.
Seems like Spring never calls for registerConvertersIn
on CustomConversions and thus our custom converters added through overriden AbstractMongoConfiguration#customConversions
never become part of conversion.
我们正在使用Spring Data Mongo 1.6.3,但似乎对于1.8.0也可能是个问题(我检查了对CustomConversions#registerConvertersIn
的调用,但没有找到.)
We are using Spring Data Mongo 1.6.3, but it seems it could be a problem for 1.8.0 too (I've checked calls to CustomConversions#registerConvertersIn
and found none.)
我能够通过如下方式在自定义MappingMongoConverter
中调用CustomConversions#registerConvertersIn
来解决此问题:
I was able to fix this problem by calling CustomConversions#registerConvertersIn
in custom MappingMongoConverter
like this:
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;
}
}
是错误还是我们做错了什么?
Is that a bug or we are doing something wrong?
找到了另一种解决方法: https://stackoverflow.com/a/14369998/4567261
Found another work around: https://stackoverflow.com/a/14369998/4567261
推荐答案
您是否用@Configuration
注释了MongoConfig
类?
您的MongoConfig类需要由Spring BeanFactory管理以获取自动调用的回调afterPropertiesSet()
(其中最初叫conversions.registerConvertersIn(conversionService)
)自动
Your class MongoConfig need to be managed by the Spring BeanFactory to get callback afterPropertiesSet()
( where conversions.registerConvertersIn(conversionService)
is originally called ) automatically called
如果不注释配置Bean,则需要自己调用afterPropertiesSet()
If you don't annotate you configuration bean you need to call afterPropertiesSet()
yourself
这篇关于在Spring Data Mongo中设置自定义转换器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!