0

Spring Batch アプリケーションを作成していて、Spring Beans 構成を複数のファイルに分割しました。

  • batch/launchContext.xml (JobLauncher/JobRepository など)
  • batch/common.xml (すべてのジョブで使用される共通 Bean)
  • dataSource.xml (データ ソース)
  • batch/jobs/myJob.xml (ジョブの個別ファイル)

この理由は、データ ソースを開発/テスト/運用セットアップ間で変更し、同じ Bean 定義を何度も何度も書き直す手間を省きたいからです。

問題は、Spring Batch アプリケーションを起動したいときにあります。ここの手順を読むときhttp://static.springsource.org/spring-batch/reference/html/configureJob.html#runningJobsFromCommandLineジョブごとに1つのSpring構成ファイルを想定していますが、それは私がやりたい方法ではありません。

複数の Bean 構成ファイルを使用するコマンドラインから Spring Batch ジョブを実行するにはどうすればよいですか?

4

1 に答える 1

1

いつでもコンテキストをインポートできます。

だからbatch/jobs/myJob.xml

<import resource="batch/launchContext.xml" />
<import resource="batch/common.xml" />
<import resource="dataSource.xml" />

SpringDocsも参照してください

編集:

プロパティプレースホルダーを使用して、データソースのプロパティ定義を外部化できます。

あなたのdataSource.xml

<bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
</bean>

<context:property-placeholder 
   location="classpath:com/foo/jdbc.properties" 
   systemPropertiesMode="2" />  <!-- 2 means override -->

デフォルトjdbc.properties値が含まれます:

jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root

ただし、「オーバーライド」システムプロパティモードを使用するため、これらは実行時に指定できます。

java -Djdbc.url=jdbc:hsqldb:hsql://dev:9002 ...

こちらもご覧ください

于 2012-10-23T08:40:09.093 に答える