春季启动:注册mongodb自定义转换器

时间:2018-09-21 06:58:07

标签: spring spring-boot

我在Spring Bott服务中使用了这种依赖关系:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

我已经创建了一个自定义转换器:

import org.springframework.core.convert.converter.Converter;

@Component
public class ReferenceWriterConverter implements Converter<Reference, DBObject> {
    @Override
    public DBObject convert(Reference reference) {
        DBObject dbObject = new BasicDBObject();
        //...
        return dbObject;
    }
}

我正在尝试找出如何“注册”该转换器。但是,在那儿潜水时,我不太清楚是需要使用CustomConvertions类还是MappingMongoConverter

我需要如何将自定义转换器“注册”到我的spring boot服务中?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您需要覆盖mongodb的customConversions,如下所示:

@Configuration
public class MongoConfig {

    @Bean
    public MongoCustomConversions customConversions(){
        List<Converter<?,?>> converters = new ArrayList<>();
        converters.add(ReferenceWriterConverter.INSTANCE);
        return new MongoCustomConversions(converters);
    }

    @WritingConverter
    enum ReferenceWriterConverter implements Converter<Reference, DBObject> {

        INSTANCE;

        @Override
        public String convert(Reference reference) {
            //do stuff
        }
    }
}

当然,您也可以像上面一样在单独的类中声明转换器,并将其自动连接到配置中。

相关问题