Предотвратить автоматический запуск задания Spring Batch после создания контекста без Spring Boot

Я настраиваю проект с помощью Spring Batch без использования Spring Boot. Когда создается контекст приложения Spring, выполняются все задания.

Я попытался добавить spring.batch.job.enbled=false в application.properties, чтобы предотвратить это, но это все равно не работает.

Есть ли другой способ остановить Spring от выполнения заданий при запуске?

Основной класс:

package com.project.batch;
import ...    

@Configuration
@EnableBatchProcessing
@PropertySource("classpath:application.properties")
public class App {
    public static void main(String [] args) throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
        System.out.println("starting main");

        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
        context.scan("com.project.batch");
        context.refresh();

        //JobParameters jobParameters = new JobParametersBuilder().toJobParameters();
        //JobLauncher jobLauncher = context.getBean(JobLauncher.class);
        //JobExecution execution = jobLauncher.run(context.getBean("loaderJob",Job.class),jobParameters);
        System.out.println("finished!!");
    }
}

Класс работы:

package com.project.batch;
import ... 

@Configuration
public class LoaderJobConfig {
    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job loaderJob(Step step1) throws Exception {
        System.out.println("Starting loaderJob");
        ...
    }
}

приложение.свойства:

spring.batch.job.enbled=false
spring.batch.job.names=

Журналы запуска:

starting main
Nov 06, 2017 9:29:02 AM org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@306a30c7: startup date [Mon Nov 06 09:29:02 EST 2017]; root of context hierarchy
Nov 06, 2017 9:29:03 AM org.springframework.context.annotation.ConfigurationClassEnhancer intercept
WARNING: @Bean method ScopeConfiguration.stepScope is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean Javadoc for complete details
Nov 06, 2017 9:29:03 AM org.springframework.context.annotation.ConfigurationClassEnhancer intercept
WARNING: @Bean method ScopeConfiguration.jobScope is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean Javadoc for complete details
Nov 06, 2017 9:29:03 AM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
INFO: Loaded JDBC driver: org.postgresql.Driver
Starting loaderJob
found the value: [MER]
Completed loaderJob
finished!!

Process finished with exit code 0

РЕДАКТИРОВАТЬ: удален код выполнения задания из основного класса, задания по-прежнему запускаются при обновлении контекста.

РЕДАКТИРОВАТЬ 2: Включение журналов запуска

РЕДАКТИРОВАТЬ 3: исправлена ​​опечатка и обновлены журналы


person saurb    schedule 02.11.2017    source источник
comment
Ваш основной метод - выполнение задания. Удалите код там, если вы не хотите, чтобы я выполнялся при запуске...   -  person Michael Minella    schedule 03.11.2017
comment
@MichaelMinella Я удалил код выполнения задания, но задания по-прежнему запускаются   -  person saurb    schedule 03.11.2017
comment
Можете ли вы предоставить журналы, показывающие запуск?   -  person Michael Minella    schedule 03.11.2017
comment
Добавил логи сейчас   -  person saurb    schedule 03.11.2017
comment
у вас опечатка в свойствах: должно читаться spring.batch.job.enabled=false, а не enbled   -  person dube    schedule 06.11.2017
comment
@dube обновил конфигурацию, но задание по-прежнему выполняется   -  person saurb    schedule 06.11.2017


Ответы (3)


Решение, упомянутое в Spring документы у меня работали. Я только что добавил одну строку в application.properties, и она останавливает выполнение пакетного задания при запуске.

spring.batch.job.enabled=false
person Community    schedule 29.05.2018

spring.batch.job.enabled = ложь

эта конфигурация работает для меня

person GYANENDRA KUMAR PANDEY    schedule 11.06.2020

Согласно документам Spring, добавление строки ниже в application.properties отлично работает для меня:

spring.batch.job.enabled=false
person Yogesh    schedule 10.07.2021