【问题标题】:spring boot/batch disable batch auto start via codespring boot/batch 通过代码禁用批量自动启动
【发布时间】:2018-02-09 04:51:06
【问题描述】:

我正在编写一个 spring 批处理应用程序,其中包含需要按特定顺序执行的不同作业。 为了做到这一点,我通过 JobLauncher 手动运行作业,并通过在我的属性文件中添加以下属性来禁用 Spring 批处理提供的自动启动功能:

spring.batch.job.enabled=false

我想直接在代码中禁用这个功能,而不是依赖任何人都可以访问和修改的配置文件。

有没有办法做到这一点?

【问题讨论】:

  • 你可以试试JavaConfig
  • Roger Thomas 的answer 有帮助吗?想法是始终将硬编码的值放入代码中。
  • 嗨@SabirKhan,感谢您的回复。它正在工作,但可以通过在属性文件中明确设置“spring.batch.job.enabled=true”来绕过它。不过总比没有好。

标签: spring-boot spring-batch batch-processing


【解决方案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,它不应该运行。

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2017-01-31
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多