Экземпляр MyTask
создается вручную (в MyTask th = new MyTask()
), а не Spring, следовательно, внедрение зависимостей не будет выполнено, и автонастройка JobLauncher
будет нулевой.
Вам необходимо создатьbean-компонент типа MyTask
(чтобы его зависимости корректно вводились), а затем внедрите его в свой класс Scheduler
в качестве соавтора.
В качестве примечания: это не идеальный способ одновременного запуска нескольких заданий. ,Вы создаете JobLauncher
для потока, который, в свою очередь, использует SyncTaskExecutor
по умолчанию. Что вы можете сделать, это создать один JobLauncher
и настроить его с помощью пула потоков для одновременного запуска заданий, например:
@Bean
public JobLauncher jobLauncher() {
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(jobRepository());
jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor()); // or use ThreadPoolTaskExecutor
jobLauncher.afterPropertiesSet();
return jobLauncher;
}
Более подробную информацию вы можете найти в Настройка JobLauncher раздел справочной документации.