Quartz的使用方式
配置文件方式
一、引入依赖
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-context-supportartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.quartz-schedulergroupId>
<artifactId>quartzartifactId>
<version>2.3.0version>
dependency>
<dependency>
<groupId>org.quartz-schedulergroupId>
<artifactId>quartz-jobsartifactId>
<version>2.3.0version>
dependency>
二、创建自定义task类
public class MyTask {
//定时任务执行的方法
public void execute() {
System.out.println("当前系统时间:" + new Date().toLocaleString());
}
}
三、配置spring的配置文件
配置任务类(MyTask)
<bean id="myTask" class="top.wintp.crud.task.MyTask"/>
配置任务详情(jobDetail)
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myTask"/>
<property name="targetMethod" value="execute">property>
bean>
配置触发器
<bean id="cronTriggerFactoryBean"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"/>
<property name="cronExpression">
<value>0/2 * * * * ?value>
property>
bean>
配置调度工厂
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerFactoryBean"/>
list>
property>
bean>
配置都是固定的,如果我们新增一个定时任务,仅仅只需要新增一个自定义的task类。新增一个任务详情(修改执行的方法以及任务类的引用),新增触发器(修改cron表达式)。将我们新增的触发器添加到调度工厂的triggers的引用中即可。
cron表达式在线生成网址(百度上有很多,请自行百度)
四、测试类测试是否成功
public class TestMyQuartz {
public static void main(String[] args) {
ApplicationContext context
= new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
}
}
核心概念
1、scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。
2、JobDetail是一个可执行的工作,它本身可能是有状态的。
3、Trigger触发器代表一个调度参数的配置,什么时候去调。
4、当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。
5、scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效率。