将Spring Batch集成到现有的Spring应用程序中。表已创建。创建并注册了三个新作业。可以通过jobOperator和jobLauncher找到它们。但是,当调用NPE时,它们会从祖先Spring批处理类(AbstractJob)中出来。
我尝试从jobOperator和jobLauncher调用该作业。甚至首先在jobRepository中按名称查找作业。作业开始,但随后出现NPE。
height: x;
就像SpringBatch正在创建一个未配置的新SimpleJob对象并尝试运行该对象一样:
@Component("processVlsCasesJob")
@Scope(value = "prototype", proxyMode = ScopedProxyMode.NO)
public class ProcessVlsCasesJobImpl
extends BatchJobAncestorImpl
implements ProcessVlsCasesJob {
...
@SuppressWarnings("serial")
@Component
@Transactional(propagation = Propagation.REQUIRED)
public abstract class BatchJobAncestorImpl
extends SimpleJob
implements BatchJobAncestor {
@Autowired // custom DAO
private BatchAuditDAO batchAuditDAO;
...
public interface BatchJobAncestor extends Job, Serializable {
...
Long jobExecutionId = null;
String parameters = jobParametersExtractor.fromJobParameters(jobParameters);
jobExecutionId = jobOperator.start(result.getJobName(), parameters);
result.setJobExecutionId(jobExecutionId);
我不明白为什么会这样。我可以逐步完成注册逻辑,进入具体作业类的构造函数(上面的ProcessVlsCases),再到其祖先,直到SimpleJob(我没有源,所以我跳过它),然后进入到@PostConstruct方法中。具体课程。