2

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

默认情况下,castor marshalles 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>
4

2 回答 2

1

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

该类org.springframework.oxm.castor.CastorMarshaller应负责设置属性,并且此SPR-8470甚至存在 jira 问题,但补丁在一年多后未提交到主分支。

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

简而言之,我们在 CastorMarshaller 中需要一个 setProperties(...) 方法,但补丁没有提交。

于 2012-07-19T11:15:10.757 回答
0

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

一般在你提到的链接搜索位置都有描述:

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

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

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


Castor 扫描加载的属性文件(文件名固定)一般有两种,具体可以查看 Castor 源码:

我们通常放在castor.propertiesclasspath 根目录下,也就是你的项目src/目录(如果你使用 maven,在 下src/main/java/)。

希望这可以帮助。

于 2012-07-16T23:36:25.000 回答