2017-08-31 95 views
0

我在写谁,包括需要按照特定的顺序执行不同的工作弹簧批处理应用程序启动。 为了做到这一点,我手动运行的作业通过JobLauncher,我禁用通过添加我的财产下列财产由Spring批量提供的自动启动功能文件:春季启动/关闭一批批汽车通过代码

spring.batch.job.enabled=false 

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

有没有办法做到这一点?

+0

你可以用JavaConfig尝试 – Siddhesh

+0

罗杰托马斯的[answer](https://stackoverflow.com/questions/29072628/how-to-override-spring-boot-application-properties-programmatically)有帮助吗? Idea始终将代码硬编码值放在代码中。 –

+0

@SabirKhan您好,感谢您的回复。这是工作,但它可以通过在属性文件中明确设置“spring.batch.job.enabled =真正的”被绕过。虽然比没有好。 –

回答

0
@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,它不应该运行。