をSkipListener
から取得しようとしています。SkipListenerからExecutionContextを取得する際の問題
import com.xxxx.domain.UserAccount;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.annotation.BeforeStep;
import org.springframework.batch.core.annotation.OnSkipInWrite;
import org.springframework.mail.MailSendException;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class MailSkipListener {
private StepExecution stepExecution;
@BeforeStep
public void saveStepExecution(StepExecution stepExecution) {
this.stepExecution = stepExecution;
}
@OnSkipInWrite
public void logSkippedEmail(UserAccount userAccount, Throwable t) {
if (t instanceof MailSendException) {
MailSendException e = (MailSendException) t;
log.warn("FailedMessages: " + e.getFailedMessages());
}
}
}
MailSendException
が発生したときただし、logSkippedEmail
メソッドが実行されることはありません。ここで
は、私は(私は私のリスナーを実装するために、注釈の代わりに、インターフェースに依存している)を試みてきたものです。 saveStepExecution
メソッドを削除すると、MailSendException
の場合にはlogSkippedEmail
が再度実行されます。
私は次のように私のMailSkipListener
を登録します。
@Bean
public Step messagesDigestMailingStep(EntityManagerFactory entityManagerFactory) {
return stepBuilderFactory
.get("messagesDigestMailingStep")
.<UserAccount, UserAccount>chunk(5)
...
.writer(itemWriter)
.listener(mailSkipListener)//Here
.build();
}
を私はここで達成しようとしている何が私のSkipListener
からExecutionContext
を取得しています。これはどのように達成できますか? ExecutionContext
をオートワイヤリングする方法がないようです。
こんにちは。これは私が上記で試したことですが、インターフェースの代わりに注釈を使用しています – balteo