依赖
<properties>
<springframework.version>5.1.6.RELEASE</springframework.version>
<quartz.version>2.2.3</quartz.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
</dependencies>
spring-quartz.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="lxJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="name" value="job1"/>
<property name="group" value="job_group1"/>
<property name="jobClass" value="com.job.MyJob"/>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="name" value="trigger1"/>
<property name="group" value="trigger_group1"/>
<property name="jobDetail" ref="lxJob"/>
<property name="cronExpression" value="*/5 * * * * ?" />
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
<property name="quartzProperties">
<value>
# 指定调度器名称,实际类型为:QuartzScheduler
org.quartz.scheduler.instanceName = MyScheduler
# 指定连接池
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
# 连接池线程数量
org.quartz.threadPool.threadCount = 11
# 优先级
org.quartz.threadPool.threadPriority = 5
# 不持久化job
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
</value>
</property>
</bean>
</beans>
定义job
public class MyJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDetail jobDetail=context.getJobDetail();
String jobName = jobDetail.getKey().getName();
String jobGroup = jobDetail.getKey().getGroup();
System.out.println("job执行,job:"+jobName+" group:"+jobGroup+new Date());
}
}
测试
public class QuartzTest {
public static void main(String[] args) throws SchedulerException, InterruptedException {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-quartz.xml");
StdScheduler stdScheduler =(StdScheduler) context.getBean("scheduler");
Thread.sleep(5000);
GroupMatcher<JobKey> group1 = GroupMatcher.groupEquals("job_group1");
Thread.sleep(5000);
stdScheduler.pauseJobs(group1);
Thread.sleep(5000);
stdScheduler.resumeJobs(group1);
}
public static void test1() throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.endAt(new GregorianCalendar(2020,7,20,12,30,0).getTime())
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(3).withRepeatCount(5))
.build();
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("job1","group1")
.build();
scheduler.scheduleJob(job,trigger);
scheduler.start();
}
public static void test2() throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("t1", "g1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 14 10-12 * * ?")).build();
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("job1","group1")
.build();
scheduler.scheduleJob(job,trigger);
scheduler.start();
}
}