使用Spring Oxm设置castor属性



Spring Oxm允许您使用不同的编组器/解编组器,Castor就是其中之一。

默认情况下,castor会整理未受影响的xml文档,而官方文档则表示,将castor.properties文件放在包括org.exolab.castor.indent=true行在内的搜索位置将覆盖默认行为。

现在,当在web应用程序(Spring Batch Admin)中使用Spring Oxm时,我如何覆盖castor jar中的castor.properties?

我有以下bean配置(删除了额外的行),据我所见,它们没有必要的属性来设置。

<bean id="myCastorMarshaller" 
    class="org.springframework.oxm.castor.CastorMarshaller">
<property name="mappingLocation" value="classpath:/mapping/my-mapping.xml" />
</bean>
<bean id="myXmlWriter" 
   class="org.springframework.batch.item.xml.StaxEventItemWriter">
<property name="marshaller" ref="myCastorMarshaller" />
</bean>

回答我自己的问题:使用Spring 3.1.2无法解决这个问题。

org.springframework.oxm.castor.CastorMarshaller类应该负责设置属性,它甚至有这个SPR-8470的jira问题,但补丁在一年多后没有提交给主分支。

任何人都可以将Github上的CastorMarshaller与拟议的补丁进行比较。

简而言之,我们需要CastorMarshaller中的setProperties(…)方法,但该补丁尚未提交。

在web应用程序(Spring Batch Admin)中使用Spring Oxm时,如何覆盖castor jar中的castor.properties

它通常描述在你提到的链接搜索位置:

Castor按以下顺序加载Castor.properties:

  1. 来自类路径(通常来自jar文件)
  2. 来自{java.home}/lib(如果存在)
  3. 从本地工作目录

每个特性文件都会覆盖上一个特性文件。因此,您不必创建一个包含所有属性和值的属性文件,只需更改这些属性和值即可。这也意味着您不必触摸jar文件中的属性文件。


通常有两种属性文件(具有固定文件名)由Castor扫描和加载,您可以查看Castor源以了解更多详细信息:

  • 默认属性文件:castor.core.properties,签出源代码loadDefaultProperties()
  • 用户属性文件:castor.properties,检查源代码loadUserProperties()

我们通常将castor.properties放在类路径根目录下,这是您项目的src/目录(如果您使用maven,则放在src/main/java/下)。

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新