Пример планировщика Spring 3 + Quartz 1.8.6
Updated on 25 July 2012 - статья об обновлении для использования Spring 3 и Quartz 1.8.6 (это были Spring 2.5.6 и Quartz 1.6)
В этом руководстве мы покажем вам, как интегрировать Spring с каркасом планировщика Quartz. Spring поставляется с множеством удобных классов для поддержки Quartz и разделения вашего класса на API Quartz.
Используемые инструменты:
-
Весна 3.1.2. РЕЛИЗ
-
Кварц 1.8.6
-
Затмение 4.2
-
Maven 3
Why NOT Quartz 2?
В настоящее время Spring 3 все еще НЕ поддерживает API Quartz 2, см. этотSPR-8581 bug report. Обновит эту статью снова, как только будет выпущена исправленная ошибка.
1. Зависимость проекта
Для интеграции Spring 3 и Quartz 1.8.6 необходимы следующие зависимости.
Файл: pom.xml
...... org.springframework spring-core 3.1.2.RELEASE org.springframework spring-context-support 3.1.2.RELEASE org.springframework spring-tx 3.1.2.RELEASE org.quartz-scheduler quartz 1.8.6
2. Задача планировщика
Создайте обычный Java-класс, это класс, который вы хотите запланировать в Quartz.
Файл: RunMeTask.java
package com.example.common;
public class RunMeTask {
public void printMe() {
System.out.println("Spring 3 + Quartz 1.8.6 ~");
}
}
3. Объявить задание Quartz Scheduler
С помощью Spring вы можете объявить задание Quartz двумя способами:
3.1 MethodInvokingJobDetailFactoryBean
Это самый простой и понятный метод, подходящий для простого планировщика.
3.2 JobDetailBeanQuartzJobBean более гибкий и подходит для сложного планировщика. Вам нужно создать класс, расширяющий SpringQuartzJobBean, и определить метод, который вы хотите запланировать в методеexecuteInternal(), и передать задачу планировщика (RunMeTask) через метод установки.
Файл: RunMeJob.java
package com.example.common;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class RunMeJob extends QuartzJobBean {
private RunMeTask runMeTask;
public void setRunMeTask(RunMeTask runMeTask) {
this.runMeTask = runMeTask;
}
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
runMeTask.printMe();
}
}
Настройте целевой класс черезjobClass и метод для запуска черезjobDataAsMap.
4. Спусковой крючок
Настройте триггер Quartz, чтобы определить, когда будет запускаться ваше задание планировщика. Поддерживаются два типа триггеров:
4.1 SimpleTrigger
Позволяет установить время начала, время окончания, интервал повтора для запуска вашего задания.
4.2 CronTrigger
Это позволяет выражению cron Unix указывать дату и время для запуска вашего задания.
Note
Выражение cron в Unix очень гибкое и мощное, подробнее читайте на следующих веб-сайтах:
5. Планировщик Фабрика
Создайте фабричный компонент Scheduler, чтобы объединить вместе детали задания и триггер.
6. Файл конфигурации Spring Bean
Завершите файл конфигурации bean-компонента Spring.
Файл: Spring-Quartz.xml
7. Demo
Запустите ~
package com.example.common;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main( String[] args ) throws Exception
{
new ClassPathXmlApplicationContext("Spring-Quartz.xml");
}
}
Вывод на консоль.
Jul 25, 2012 3:23:09 PM org.springframework.scheduling.quartz.SchedulerFactoryBean startScheduler INFO: Starting Quartz Scheduler now Spring 3 + Quartz 1.8.6 ~ //run every 5 seconds Spring 3 + Quartz 1.8.6 ~
Скачать исходный код
Скачать -Spring3-Quartz-Example.zip (25 КБ)