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
首次查找时扫描映射元数据。是的,类路径扫描支持通配符。我进行了相应的更新,以更新参考文档。