Я использую задание Spring Batch в Spring Загрузочное приложение со следующей конфигурацией:
Код: Выделить всё
@Configuration
public class MyJobConfiguration {
@Bean
public Tasklet myTasklet() {
return (contribution, chunkContext) -> {
System.out.println("execute myTasklet");
return RepeatStatus.FINISHED;
};
}
@Bean
public Step myStep(JobRepository jobRepository, Tasklet myTasklet, PlatformTransactionManager transactionManager) {
return new StepBuilder("myStep", jobRepository)
.tasklet(myTasklet, transactionManager)
.build();
}
@Bean
public Job myJob(JobRepository jobRepository, Step myStep) {
return new JobBuilder("myJob", jobRepository)
.start(myStep)
.build();
}
}
Код: Выделить всё
@SpringBatchTest
@ContextConfiguration(classes = MyJobConfiguration.class)
@EnableAutoConfiguration
class MyJobConfigurationTest {
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
@Autowired
private JobRepositoryTestUtils jobRepositoryTestUtils;
@BeforeEach
public void setup(@Autowired Job jobUnderTest) {
this.jobLauncherTestUtils.setJob(jobUnderTest); // this is optional if the job is unique
this.jobRepositoryTestUtils.removeJobExecutions();
}
@Test
public void testMyJob() throws Exception {
// given
JobParameters jobParameters = this.jobLauncherTestUtils.getUniqueJobParameters();
// when
JobExecution jobExecution = this.jobLauncherTestUtils.launchJob(jobParameters);
// then
Assertions.assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
}
}
Код: Выделить всё
@Configuration
public class MyJobConfiguration extends DefaultBatchConfiguration {
public static final int MAX_BATCH_TASK_EXECUTOR_POOL_SIZE = 20;
@Override
public TaskExecutor getTaskExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setMaxPoolSize(MAX_BATCH_TASK_EXECUTOR_POOL_SIZE);
threadPoolTaskExecutor.afterPropertiesSet();
return threadPoolTaskExecutor;
}
Настройка возможна путем расширения класса и переопределения методов получения.
Вот почему я выбрал этот подход. Однако это, похоже, нарушает автоконфигурацию Spring Boot для Spring Batch. Весенний пакетный тест завершается неудачей, поскольку инициализация схемы базы данных больше не выполняется. Отчет об оценке состояния подтверждает это.
Можно ли таким образом настроить конфигурацию Spring Batch?
При использовании автоконфигурации Spring Boot для Spring Batch , есть ли другой способ добавить настройки?
Предпочтительнее ли настроить дополнительные средства запуска заданий, а не настраивать поведение средства запуска заданий по умолчанию?
Подробнее здесь: https://stackoverflow.com/questions/782 ... ng-autocon