クラスで取得JobParameter
してJobExecutionContext
オブジェクトを作成したい。ItemWriter
どうやって進める?
StepExecutionListener
親クラスのメソッドを呼び出すだけで実装してみました。しかし、それは成功していません。
前もって感謝します。
クラスで取得JobParameter
してJobExecutionContext
オブジェクトを作成したい。ItemWriter
どうやって進める?
StepExecutionListener
親クラスのメソッドを呼び出すだけで実装してみました。しかし、それは成功していません。
前もって感謝します。
StepExecutionListener の実装は 1 つの方法です。実際、Spring Batch 1.x ではそれが唯一の方法です。
Spring Batch 2 以降では、別の選択肢があります。ジョブ パラメーターとジョブ実行コンテキストの任意のエントリをアイテム ライターに注入できます。step
スコープ付きのアイテム ライターを作成し、アイテム ライターに値を注入するための#{jobParameters['theKeyYouWant']}
orのような式を使用します。#{jobExecutionContext['someOtherKey']}
Adrian Shum の回答に追加するには、各ジョブ パラメーターがクラス プロパティとして注入されるのを避けたい場合は、次のようにMap
ofを直接注入できます。JobParameter
@Value("#{jobParameters}")
private Map<String, JobParameter> jobParameters;
Spring 構成ファイルを使用している場合は、次の方法で StepExecution オブジェクトにアクセスできます。
<bean id="aaaReader" class="com.AAAReader" scope="step">
<property name="stepExecution" value="#{stepExecution}" />
</bean>
AAAReader クラスでは、適切なフィールドとセッターを作成する必要があります。
private StepExecution stepExecution;
public void setStepExecution(final StepExecution stepExecution) {
this.stepExecution = stepExecution;
}
Processor および Writer クラスについても同様です。