Spring Oxm允许您使用不同的编组/解组程序,Castor就是其中之一。
默认情况下,castor编组未缩进的xml文档,而官方文档告诉我们,将包含org.exolab.castor.indent=true行的castor.properties文件放入search locations将覆盖默认行为。
现在,当在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>发布于 2012-07-19 19:15:11
回答我自己的问题:使用Spring 3.1.2没有解决这个问题的方法。
org.springframework.oxm.castor.CastorMarshaller类应该负责设置属性,它甚至对这个SPR-8470有jira问题,但是补丁在一年多后没有提交到主分支。
任何人都可以将CastorMarshaller at Github与提议的patch进行比较。
简而言之,我们需要一个setProperties(...)方法,但未提交修补程序。
发布于 2012-07-17 07:36:25
在web应用程序(Spring Batch Admin)中使用Spring Oxm时,如何覆盖castor jar中的castor.properties?
在您提到的链接search locations中对其进行了一般描述:
Castor按以下顺序加载castor.properties:
每个属性文件都会覆盖前一个属性文件。因此,您不必创建一个包含所有属性和值的属性文件,只需提供要更改的属性和值即可。这也意味着您不必接触jar文件中的属性文件。
Castor通常会扫描和加载两种属性文件(带有固定文件名),您可以查看Castor源代码以了解更多详细信息:
castor.core.properties,签出源代码属性文件:castor.properties,签出源代码loadUserProperties()我们通常将castor.properties放在类路径根目录下,这是您的项目的src/目录(如果您使用maven,则在src/main/java/下)。
希望这能有所帮助。
https://stackoverflow.com/questions/11506755
复制相似问题