2017-08-31 37 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,它不應該運行。