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?

questionAnswers(1)

yourAnswerToTheQuestion