2

Spring Oxmでは、さまざまなマーシャラー/アンマーシャラーを使用できます。Castorはその 1 つです。

デフォルトでは、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>
4

2 に答える 2

1

私自身の質問に答える: Spring 3.1.2 を使用すると、この質問に対する解決策はありません。

クラスorg.springframework.oxm.castor.CastorMarshallerはプロパティの設定を担当する必要があり、このSPR-8470 のジラの問題もありますが、パッチは 1 年以上経ってもメインブランチにコミットされていません。

誰でも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 によってスキャンおよびロードされる 2 種類のプロパティ ファイル (固定ファイル名) があります。詳細については、Castor ソースを参照してください。

  • デフォルト プロパティ ファイル: castor.core.properties、ソース コードをチェックアウトloadDefaultProperties()
  • ユーザー プロパティ ファイル: castor.properties、ソース コードを確認してくださいloadUserProperties()

通常castor.properties、プロジェクトのsrc/ディレクトリであるクラスパスルートの下に配置します(mavenを使用する場合は、の下src/main/java/)。

お役に立てれば。

于 2012-07-16T23:36:25.000 に答える