M A.
M A.

Reputation: 949

Spring batch job is running automatically on project startup

I've developed spring batch job which gets the data from JDBC. The problem I'm facing, it's executing on project startup regardless of enabled_property. The value of the property is FALSE. I've tried to create a conditional bean on property but it didn't also worked and job is being executed on project startup.

Following the my code snippet.

@Bean
@ConditionalOnProperty(value = "wallet-manager.djeezyConfig.enableJob" , havingValue = "false")
public Job createJob() {
    return jobBuilderFactory.get("DJeezy wallet cleaner job")
            .incrementer(new RunIdIncrementer())
            .flow(Step1())
            .end()
            .build();
}

@Bean
@ConditionalOnProperty(value = "wallet-manager.djeezyConfig.enableJob" , havingValue = "false")
public Step Step1() {
    return stepBuilderFactory.get("DJeezy wallet cleaner job - step1")
            .<ResellerWallet,ResellerWallet> chunk(wConfig.getDjeezyConfig().getChunkSize())
            .reader(resellerWalletItemReader)
            //.processor(resellerWalletProcessor)
            .writer(resellerWalletItemWriter)
            .faultTolerant()
            .skip(EmptyResultDataAccessException.class)
            .build();
}

I've also tried to commented the @Scheduled annotation but it stills executing the job and steps.

//@Scheduled(fixedDelay = 15000) public void scheduleByFixedRate() throws Exception {

if(config.getDjeezyConfig().isEnableJob()) {

    System.out.println("Batch job starting");
    JobParameters jobParameters = new JobParametersBuilder()
            .addString("time", format.format(Calendar.getInstance().getTime())).toJobParameters();
    jobLauncher.run(job, jobParameters);
    System.out.println("Batch job executed successfully\n");
}

}

Can someone please guide me what I'm missing here? and how can I prevent my job and step being executed on startup.

Upvotes: 1

Views: 1540

Answers (1)

sandeep.kokane
sandeep.kokane

Reputation: 99

spring.batch.job.enabled=false 

hope you are using this property in your properties file this should work

Upvotes: 4

Related Questions