使用类路径扫描发现 Spring 数据 Mongodb 转换器

Using classpath scanning to discover Spring Data Mongodb converters

如果我在我的 Spring 上下文文件 (as described in the docs) 中声明以下内容,我的 MongoMappingConverter 初始化时没有自定义转换器:

<mongo:mapping-converter id="mappingConverter">
  <mongo:custom-converters base-package="com.company.mongo.converters.*" />
</mongo:mapping-converter>

相比之下,如果我显式引用转换器,它们将由 MongoMappingConverter 初始化和使用。

<mongo:mapping-converter id="mappingConverter">
  <mongo:custom-converters>
    <mongo:converter>
      <bean class="com.company.mongo.converters.enums.CountryCodeWriteConverter"/>
    </mongo:converter>
    <mongo:converter>
      <bean class="com.company.mongo.converters.enums.CountryCodeReadConverter"/>
    </mongo:converter>
  </mongo:custom-converters>
</mongo:mapping-converter>

我尝试了各种不同的 base-package 值(以 "converters.enums"、"converters.enums.*"、"converters.**"、“**.converters.enums”结尾) ,都没有效果。有谁知道如何进行这项工作?

我正在使用 Spring Data Mongodb v1.4.2 和 Spring v3.2.13。升级到 Spring Data Mongodb v1.5.x 系列的最新版本相对简单,但除此之外还需要将 Spring 升级到 v4.x,这不会是一个小任务。

确保您的 Converter 实现带有 @Component 注释。基础架构使用任意组件扫描来查找要应用的转换器。