Quartz整合Spring
阿新 • • 發佈:2020-12-07
匯入依賴
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.1.5.RELEASE</version> </dependency> <!--核心包--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version></dependency>
準備工作類
public class HelloJob implements Job{ @Override public void execute(JobExecutionContext context) throws JobExecutionException { //獲得JobDetail物件 JobDetail jobDetail = context.getJobDetail(); JobKey key = jobDetail.getKey(); //獲取標識 System.out.println(key.getName()); System.out.println(key.getGroup()); System.out.println("當前時間:"+new Date()); } }
配置applicationContext.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"> <!-- Spring 整合Quartz 進行配置遵循下面的步驟 1:定義工作任務的job 2:定義觸發器Trigger,並將觸發器與工作任務繫結 3:定義排程器,並將Trigger註冊到Scheduler --> <!--1:定義任務的bean--> <bean name="lxJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <!--指定job的名稱--> <property name="name" value="job"/> <!--指定job的分組--> <property name="group" value="job_group1"/> <!--指定具體的job類--> <property name="jobClass" value="com.cc.HelloJob"/> </bean> <!--2:定義觸發器的bean,定義一個Cron的Trigger,一個觸發器只能和一個任務繫結--> <bean id="cronTriger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!--指定Trigger的名稱--> <property name="name" value="trigger1"/> <!--指定Trigger的名稱--> <property name="group" value="trigger_group1"/> <!--指定Trigger繫結的JobDetail--> <property name="jobDetail" ref="lxJob"/> <!--指定Cron表示式--> <property name="cronExpression" value="*/2 * * * * ?"/> </bean> <!--3:定義排程器,並將Trigger註冊到排程器中--> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriger"/> </list> </property> <!--新增quartz 配置--> <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>
啟動類
public class TestQuartzSpring { public static void main(String[] args) { //工廠啟動,排程器啟動,任務排程開始 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); } }