spring boot/batch disable batch auto start via code 通过代码禁用Spring Boot/Batch的自动批处理启动
问题描述:如何通过代码禁用Spring Boot的批处理自动启动功能。
问题原因:在Spring Boot的BatchAutoConfiguration类中,通过注解配置的方式决定是否启用批处理功能。具体代码如下:
(prefix = "spring.batch.job", name = "enabled", havingValue = "true", matchIfMissing = true) public JobLauncherCommandLineRunner jobLauncherCommandLineRunner( JobLauncher jobLauncher, JobExplorer jobExplorer) { JobLauncherCommandLineRunner runner = new JobLauncherCommandLineRunner( jobLauncher, jobExplorer); String jobNames = this.properties.getJob().getNames(); if (StringUtils.hasText(jobNames)) { runner.setJobNames(jobNames); } return runner; }
解决方法:根据上述代码,可以尝试添加自己的JobLauncherCommandLineRunner实现类,并在该类中不执行任何操作。这样做会影响Spring Boot的批处理自动启动功能,使其不会执行。
public class CustomJobLauncherCommandLineRunner extends JobLauncherCommandLineRunner { public CustomJobLauncherCommandLineRunner(JobLauncher jobLauncher, JobExplorer jobExplorer) { super(jobLauncher, jobExplorer); } // 空实现,不做任何操作 @Override public void run(String... jobNames) { } }
通过使用自定义的CustomJobLauncherCommandLineRunner类替换原有的JobLauncherCommandLineRunner类,即可禁用Spring Boot的批处理自动启动功能。