Я настраиваю проект с помощью 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: исправлена опечатка и обновлены журналы
spring.batch.job.enabled=false
, а неenbled
- person dube   schedule 06.11.2017