Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 将mongo自定义转换器拆分为多个上下文文件?_Spring_Spring Data - Fatal编程技术网

Spring 将mongo自定义转换器拆分为多个上下文文件?

Spring 将mongo自定义转换器拆分为多个上下文文件?,spring,spring-data,Spring,Spring Data,这是我的配置: <org.springframework.version>3.1.0.RELEASE</org.springframework.version> <spring.data.mongo.version>1.0.0.RC1</spring.data.mongo.version> 3.1.0.0版本 1.0.0.RC1 是否可以从此1 spring上下文文件中拆分: <mongo:mapping-converte

这是我的配置:

    <org.springframework.version>3.1.0.RELEASE</org.springframework.version>
    <spring.data.mongo.version>1.0.0.RC1</spring.data.mongo.version>
3.1.0.0版本
1.0.0.RC1
是否可以从此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个spring上下文文件(在不同的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>
<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>

file2-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>
<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转换器的“合并”有什么有用的属性吗?

自定义转换器元素实际上也有一个
基本包
属性,该属性将触发所列包被扫描以查找
转换器
通用转换器
实现。在
映射转换器
级别使用的方法是在启动时拾取域类。因此,只需删除显式定义的转换器bean并添加附加属性就可以了

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

自定义转换器元素实际上也有一个
基本包
属性,该属性将触发所列包被扫描以查找
转换器
通用转换器
实现。在
映射转换器
级别使用的方法是在启动时拾取域类。因此,只需删除显式定义的转换器bean并添加附加属性就可以了

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

如果配置为:

<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>

它很好用。 如果配置为:

<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>

转换器不适用。
pagckage com.abc.*.entities具有@Document annotated类和@Entity annotated类。

如果配置为:

<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>
<mongo:mapping-converter base-package="my.package.entities">
  <mongo:custom-converters base-package="my.package.converters" />
</mongo:mapping-converter>

它很好用。 如果配置为:

<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>

转换器不适用。 pagckage com.abc.*.entities具有@Document注释类和@Entity注释类。


<mongo:mapping-converter base-package="my.package.entities">
  <mongo:custom-converters base-package="my.package.converters" />
</mongo:mapping-converter>
在1.1.0.0版本中不起作用。如果查看XSD文件,则只有mongo:mapping converter和converter定义基本包。所以你仍然需要这样做

<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>

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


在1.1.0.0版本中不起作用。如果查看XSD文件,则只有mongo:mapping converter和converter定义基本包。所以你仍然需要这样做

<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>


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

谢谢提示!你能指出关于“启动时拾取域类”的文档吗?我想进一步了解这一说法。我还想知道“my.package.*.converters”是否有效。
映射转换器上的
base package
会扫描配置的包,查找带有
@Document
注释的类,以避免在
MappingContext
首次查找时扫描映射元数据。是的,类路径扫描支持通配符。我更新了相应的参考文档。谢谢提示!你能指出关于“启动时拾取域类”的文档吗?我想进一步了解这一说法。我还想知道“my.package.*.converters”是否有效。
映射转换器上的
base package
会扫描配置的包,查找带有
@Document
注释的类,以避免在
MappingContext
首次查找时扫描映射元数据。是的,类路径扫描支持通配符。我进行了相应的更新,以更新参考文档。