使用Spring Oxm设置脚轮属性

时间:2012-07-16 14:46:28

标签: spring spring-batch castor spring-batch-admin spring-oxm

Spring Oxm允许您使用不同的marshallers / unmarshallers,Castor就是其中之一。

默认情况下,castor marshalles xml文档没有缩进,官方文档告诉我们将search locations中的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>

2 个答案:

答案 0 :(得分:1)

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

org.springframework.oxm.castor.CastorMarshaller应该负责设置属性,它甚至对此SPR-8470有jira问题,但是修补程序在超过一年后没有提交给主分支。

任何人都可以将CastorMarshaller at Github与提议的patch进行比较。

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

答案 1 :(得分:0)

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

通常在您提到的链接search locations中进行了描述:

  

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

     
      
  1. 来自classpath(通常来自jar文件)
  2.   
  3. 来自{java.home} / lib(如果有)
  4.   
  5. 来自本地工作目录
  6.         

    每个属性文件都会覆盖前一个属性文件。因此,您不必提供包含所有属性和值的属性文件,只需要您想要更改的属性和值。这也意味着您不必触摸jar文件中的属性文件。


通常,Castor会扫描并加载两种属性文件(具有固定文件名),您可以查看Castor源代码以获取更多详细信息:

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

希望这有帮助。