1.Quartz简介
quartz通俗来讲是用于程序在规定的时间执行任务 如以下案例
第一步:创建maven工程,导入spring和quartz相关依赖
<!--引入Quartz的依赖 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
第二步:创建任务类
public class MyJob {
public void run() {
System.out.println("任务执行了----" +
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}
第三步:在spring配置文件中配置任务类
<bean id="myJob" class="com.test.job.MailJob"></bean>
myJob" class="com.test.job.MailJob"></bean>
第四步:在spring配置文件中配置JobDetail
<!-- 配置jobDetail -->
<bean id="myJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 用到的Job实例 目标类-->
<property name="targetObject">
<ref bean="myJob" />
</property>
<!-- Job实例中的方法 目标方法-->
<property name="targetMethod">
<value>run</value>
</property>
</bean>
myJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 用到的Job实例 目标类-->
<property name="targetObject">
<ref bean="myJob" />
</property>
<!-- Job实例中的方法 目标方法-->
<property name="targetMethod">
<value>run</value>
</property>
</bean>
第五步:在spring配置文件中配置触发器
jobDetail和cronExpression是CronTriggerFactoryBean里面的属性赋值
<!-- 配置触发器Trigger -->
<bean id="myTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myJobDetail" />
</property>
<property name="cronExpression">
<!-- 每5秒执行一次 值为cron表达式 -->
<value>0/5 * * * * ?</value>
</property>
</bean>
myTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myJobDetail" />
</property>
<property name="cronExpression">
<!-- 每5秒执行一次 值为cron表达式 -->
<value>0/5 * * * * ?</value>
</property>
</bean>
第六步:在spring配置文件中配置scheduler
<!-- 配置scheduler工厂 -->
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="myTrigger" />
</list>
</property>
</bean>
myTrigger" />
</list>
</property>
</bean>
第七步:加载spring配置文件,创建spring工厂 加载完成后运行后 程序将以每隔5秒钟中执行一次
public class App {
public static void main(String[] args) {
ClassPathXmlApplicationContext classPathXmlApplicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
2.quartz核心概念
1、scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。
2、JobDetail是一个可执行的工作,它本身可能是有状态的。
3、Trigger触发器代表一个调度参数的配置,什么时候去调。
4、当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。
5、scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效率。
cron 表达式的格式
uartz cron 表达式