24

クラスで取得JobParameterしてJobExecutionContextオブジェクトを作成したい。ItemWriterどうやって進める?

StepExecutionListener親クラスのメソッドを呼び出すだけで実装してみました。しかし、それは成功していません。

前もって感謝します。

4

4 に答える 4

23

StepExecutionListener の実装は 1 つの方法です。実際、Spring Batch 1.x ではそれが唯一の方法です。

Spring Batch 2 以降では、別の選択肢があります。ジョブ パラメーターとジョブ実行コンテキストの任意のエントリをアイテム ライターに注入できます。stepスコープ付きのアイテム ライターを作成し、アイテム ライターに値を注入するための#{jobParameters['theKeyYouWant']}orのような式を使用します。#{jobExecutionContext['someOtherKey']}

于 2013-02-19T06:04:24.417 に答える
9

Adrian Shum の回答に追加するには、各ジョブ パラメーターがクラス プロパティとして注入されるのを避けたい場合は、次のようにMapofを直接注入できます。JobParameter

@Value("#{jobParameters}")
private Map<String, JobParameter> jobParameters;
于 2015-09-13T08:15:13.880 に答える
6

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 クラスについても同様です。

于 2017-07-07T09:34:23.560 に答える