spring boot/batch 通过代码禁用批量自动启动
Posted
技术标签:
【中文标题】spring boot/batch 通过代码禁用批量自动启动【英文标题】:spring boot/batch disable batch auto start via code 【发布时间】:2018-02-09 04:51:06 【问题描述】:我正在编写一个 spring 批处理应用程序,其中包含需要按特定顺序执行的不同作业。 为了做到这一点,我通过 JobLauncher 手动运行作业,并通过在我的属性文件中添加以下属性来禁用 Spring 批处理提供的自动启动功能:
spring.batch.job.enabled=false
我想直接在代码中禁用这个功能,而不是依赖任何人都可以访问和修改的配置文件。
有没有办法做到这一点?
【问题讨论】:
你可以试试JavaConfig Roger Thomas 的answer 有帮助吗?想法是始终将硬编码的值放入代码中。 嗨@SabirKhan,感谢您的回复。它正在工作,但可以通过在属性文件中明确设置“spring.batch.job.enabled=true”来绕过它。不过总比没有好。 【参考方案1】:@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(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;
这是来自BatchAutoConfiguration
。
据此判断,您可以尝试添加自己的 JobLauncherCommandLineRunner
实现,它什么都不做。这会影响@ConditionalOnMissingBean
,它不应该运行。
【讨论】:
以上是关于spring boot/batch 通过代码禁用批量自动启动的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot Batch 中的 Hibernate_sequence 错误(预定)
如何防止我的 Spring Boot Batch 应用程序在执行测试时运行?
spring-boot-starter-jta-atomikos 和 spring-boot-starter-batch
Maven 打包“JAR”不适用于 spring-boot-starter-batch