在Spring Data Mongo中设置自定义转换器 [英] Setup custom converters in Spring Data Mongo

查看:736
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆