1

这是我的配置:

    <org.springframework.version>3.1.0.RELEASE</org.springframework.version>
    <spring.data.mongo.version>1.0.0.RC1</spring.data.mongo.version>

是否可以从这 1 个 spring 上下文文件中拆分出来:

<mongo:mapping-converter base-package="my.package.converter">
    <mongo:custom-converters>
        <mongo:converter>
            <bean class="my.package.converter.ClassAbcReadConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.ClassAbcWriteConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassDefReadConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassDefWriteConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassGhiWriteConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassGhiReadConverter" />
        </mongo:converter>
    </mongo:custom-converters>
</mongo:mapping-converter>

进入 2 个弹簧上下文文件(在不同的 Maven 模块中),如下所示?

file1-context.xml

<mongo:mapping-converter base-package="my.package.converter">
    <mongo:custom-converters>
        <mongo:converter>
            <bean class="my.package.converter.ClassAbcReadConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.ClassAbcWriteConverter" />
        </mongo:converter>
    </mongo:custom-converters>
</mongo:mapping-converter>

file2-context.xml

<mongo:mapping-converter base-package="my.package.converter">
    <mongo:custom-converters>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassDefReadConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassDefWriteConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassGhiWriteConverter" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converter.subpackage.ClassGhiReadConverter" />
        </mongo:converter>
    </mongo:custom-converters>
</mongo:mapping-converter>

mongo转换器的“合并”是否有任何有用的属性?

4

3 回答 3

4

custom-converters元素实际上还有一个base-package属性,它将触发要扫描的列出的包ConverterGenericConverter实现。您在该mapping-converter级别使用的是在启动时拾取域类。因此,您只需删除显式定义的转换器 bean 并添加附加属性就可以了。

<mongo:mapping-converter base-package="my.package.entities">
  <mongo:custom-converters base-package="my.package.converters" />
</mongo:mapping-converter>
于 2012-03-29T22:00:38.597 回答
0

我也遇到同样的问题,如果配置为:

<mongo:mapping-converter>
    <mongo:custom-converters>
        <mongo:converter>
            <bean class="com.abc.converter.mongo.DBObjectToDateTime" />
        </mongo:converter>
        <mongo:converter>
            <bean class="com.abc.converter.mongo.DateTimeToDBObject" />
        </mongo:converter>
    </mongo:custom-converters>
</mongo:mapping-converter>

它工作正常。如果配置为:

<mongo:mapping-converter base-package="com.abc.*.entities">
    <mongo:custom-converters base-package="com.abc.converter.mongo" />
</mongo:mapping-converter>

转换器未应用。包装 com.abc.*.entities 具有 @Document 注释类以及 @Entity 注释类。

于 2012-04-03T14:48:52.067 回答
0
<mongo:mapping-converter base-package="my.package.entities">
  <mongo:custom-converters base-package="my.package.converters" />
</mongo:mapping-converter>

在 1.1.0.RELEASE 中不起作用。如果你看一下 XSD 文件,只有 mongo:mapping-converter 和 converter 定义了 base-package。所以你仍然需要这样做。

<mongo:mapping-converter base-package="my.package.entities">
    <mongo:custom-converters>
        <mongo:converter>
            <bean class="my.package.converters.DBObjectToDateTime" />
        </mongo:converter>
        <mongo:converter>
            <bean class="my.package.converters.DateTimeToDBObject" />
        </mongo:converter>
    </mongo:custom-converters>
</mongo:mapping-converter>

我没有尝试:

<mongo:mapping-converter base-package="my.package.entities">
    <mongo:custom-converters>
        <mongo:converter base-package="my.package.converters.DBObjectToDateTime" />
    </mongo:custom-converters>
</mongo:mapping-converter>

将注册所有转换器。这似乎没有意义,如果正确实施,维护者的建议会更好。

于 2012-12-15T21:13:17.663 回答