Mongo 未调用映射转换器

Mongo mapping converter not being invoked

我在 spring XML 中配置了一个 Mongo 映射转换器,如下所示:

<mongo:mapping-converter>
    <mongo:custom-converters>
        <mongo:converter>
            <bean class="com.pqbook.marc.mongo.converters.MarcRecordMongoReaderConverter" />
        </mongo:converter>
    </mongo:custom-converters>
</mongo:mapping-converter>

我有一个 Mongo 集合,从中读取类型 'Record' 的字段并将其转换为我的自定义 POJO 类型 'MyRecord'。 我的转换器 class 看起来像这样:

@Component
public class MarcRecordMongoReaderConverter implements Converter<Record, MyRecord> {

@Override
public MyRecord convert(Record source) {
    // the conversion code
    // this method returns an object of type 'MyRecord'
}

}

我需要用不同的方式注册这个转换器吗?这个转换器会在什么时候被调用?是否有遗漏的内容?

您的配置应该与此类似。您必须使用 mongo 模板注册转换器。

<mongo:mongo host="127.0.0.1" port="27017" />
    <mongo:db-factory dbname="test" />

    <mongo:mapping-converter id="mappingConverter" base-package="com.pqbook.marc.mongo">
        <mongo:custom-converters>
            <mongo:converter>
                <bean class="com.pqbook.marc.mongo.converters.MarcRecordMongoReaderConverter" />
            </mongo:converter>
        </mongo:custom-converters>
    </mongo:mapping-converter>

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
        <constructor-arg name="mongoConverter" ref="mappingConverter"/>
    </bean>