Spring Boot: использование @Service в выполнении задания Quartz

В приложении, поскольку я преобразовал его из классического веб-приложения Spring (развернутого в системе Tomcat) в приложение Spring Boot (V1.2.1), я столкнулся с проблемой того, что запланированные задания на основе Quartz больше не работают.

Я планирую эти кварцевые работы следующим образом:

// My own Schedule object which holds data about what to schedule when
Schedule schedule = scheduleService.get(id of the schedule);

String scheduleId = schedule.getId();

JobKey jobKey = new JobKey(scheduleId);
TriggerKey triggerKey = new TriggerKey(scheduleId);

JobDataMap jobData = new JobDataMap();
jobData.put("scheduleId", scheduleId);

JobBuilder jobBuilder = JobBuilder.newJob(ScheduledActionRunner.class)
    .withIdentity(jobKey)
    .withDescription(schedule.getName())
    .usingJobData(jobData);

JobDetail job = jobBuilder.build();

TriggerBuilder triggerBuilder = TriggerBuilder.newTrigger()
    .forJob(jobKey)
    .withIdentity(triggerKey)
    .withDescription(schedule.getName());

triggerBuilder = triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(schedule.toCronExpression()));

Trigger trigger = triggerBuilder.build();

org.quartz.Scheduler scheduler = schedulerFactoryBean.getScheduler();

scheduler.scheduleJob(job, trigger);

ScheduledActionRunner:

@Component
public class ScheduledActionRunner extends QuartzJobBean {

    @Autowired
    private ScheduleService scheduleService;

    public ScheduledActionRunner() {
    }

    @Override
    public void executeInternal(final JobExecutionContext context) throws JobExecutionException {
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
        final JobDataMap jobDataMap = context.getMergedJobDataMap();
        final String scheduleId = jobDataMap.getString("scheduleId");
        final Schedule schedule = scheduleService.get(scheduleId);
        // here it goes BANG since scheduleService is null
    }
}

ScheduleService это классический сервис Spring, который получает данные из Hibernate. Как я уже говорил выше, это работало нормально, пока я не перешел в Spring Boot.

Когда я реализовал этот код с классическим приложением Spring,SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); сделал трюк, чтобы позаботиться об автосервисе сервиса.

Что нужно для того, чтобы эта работа снова заработала в среде Spring Boot?

Редактировать:

В конце я решил отказаться от использования Quartz в пользу Spring ThreadPoolTaskScheduler. Код был значительно упрощен, и он работает, как и ожидалось.

Ответы на вопрос(2)

Ваш ответ на вопрос