Como o Spring Boot executa tarefas em lote
eu seguiesta amostra para lote de primavera com inicialização.
Quando você executa o método principal, o trabalho é executado. Dessa forma, não consigo descobrir como controlar a execução do trabalho. Por exemplo, como você programa um trabalho, obtém acesso à execução do trabalho ou define seus parâmetros.
Tentei registrar meu próprio JobLauncher
@Bean
public JobLauncher jobLauncher(JobRepository jobRepo){
SimpleJobLauncher simpleJobLauncher = new SimpleJobLauncher();
simpleJobLauncher.setJobRepository(jobRepo);
return simpleJobLauncher;
}
mas quando tento usá-lo no método principal:
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
JobLauncher jobLauncher = ctx.getBean(JobLauncher.class);
//try catch removed for readability
jobLauncher.run(ctx.getBean(Job.class), new JobParameters());
}
O trabalho é novamente executado quando o contexto é carregado e recebiJobInstanceAlreadyCompleteException
quando tento executá-lo manualmente. Existe uma maneira de impedir a execução automática do trabalho?