Quartz定时器配置详解

Quartz定时器配置详解

前段时间做项目的时候用到了quartz定时器,就中间配置和学习的过程,与大家分享一下。
这里我用的是配置在xml的。不能动态的开启和关闭。


需要的jar包

这里就只需要导入quartz-all-1.6.0.jar还有关于spring的jar包还有个commons-collections-3.2.jar


创建quartz.xml


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 定时器的java文件,在这个文件里面进行定时器的操作 -->
<bean id="userTask" class="com.reassure.utils.TimerTask" >
<property name="userService"><!-- 这里注入需要用到的service -->
<ref bean="userService" />
</property>
</bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="userTaskDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="userTask" /><!-- 这里对应着上面的class文件 -->
<!-- 调用类中的方法 -->
<property name="targetMethod" value="clearUserDayMoney" /><!-- 这里的clearUserDayMoney是上面java文件中的方法名 -->
<property name="concurrent" value="false" />
</bean>
<!-- 定义触发时间 -->
<bean id="userTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="userTaskDetail" />
<!-- cron表达式 -->
<property name="cronExpression">
<value>0 0 0 * * ? </value><!-- 每天零点触发 -->
<!--
秒 分 时 日 月
0 * * * * ?:这个表示每秒的0秒调用一下定时器;
0/2 * * * * ?:这个表示从每分的第0秒开始,每2秒执行一次userTask这个java文件中的userTaskDetail这个函数;
0 0 1 * * ?:这个表示每天的1点开始执行定时器;
-->
</property>
</bean>
<bean id="JobSchedule" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="userTaskTrigger"/><!-- 对应上面的触发时间 -->
</list>
</property>
</bean>
</beans>

将quartz.xml加入到web中去


1
2
3
4
5
<!-- 加载所有的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml,classpath:quartz.xml </param-value>
</context-param>

创建TimerTask文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.reassure.utils;
import org.springframework.beans.factory.annotation.Autowired;
import com.reassure.user.entity.User;
public class TimerTask {
@Autowired
private UserService userService;
public void clearUserDayMoney(){
User user=userService.findBy(1);
System.out.println(user.toString());
}
}

这个就是quartz整合spring的讲解,后面有时间我会把动态配置方法也写上去。谢谢小伙伴们的观看~

文章目录
  1. 1. 需要的jar包
  2. 2. 创建quartz.xml
  3. 3. 将quartz.xml加入到web中去
  4. 4. 创建TimerTask文件
,