Spring-boot:注册 mongodb 自定义转换器

Jor*_*rdi 6 spring spring-boot

我将此依赖项用于我的 spring bott 服务:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何“注册”这个转换器。然而,在那里潜水我不太清楚我是否需​​要使用CustomConvertions类或MappingMongoConverter.

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

有任何想法吗?

Mic*_*ger 5

您需要覆盖 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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