Spring Batch参数校验失败问题分析:JobParametersValidator校验了两次JobParametersIncrementer的参数
-
JobParametersIncrementer:生成唯一标识参数接口
-
JobParametersValidator:参数合法性检查接口
-
JobLauncher.run(Job, jobParameters):执行批处理任务
直接说结论
Spring Boot 会在应用启动时从 Spring 容器中找出一个 Job,如果没有配置 spring.batch.job.enabled=false,就会立刻执行这个 Job,这就好理解了,打断点在JobParametersValidator.getNext
方法,debug时发现此方法检查了2次JobParametersIncrementer
实现类中的JobParameters
内容。application.yml
加上spring.batch.job.enabled=false
配置完美解决了这个问题。后面再看就会发现JobParametersValidator
只会校验JobLauncher.run
中的参数了