1 导入坐标
<!--quartz坐标--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.3</version> </dependency>
2 创建类编写方法
public class MyTask { public void aaa(){ System.out.println("现在的时间是:"+new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss").format(new Date())); } }
3 将类交给spring容器管理 ,配置quartz和spring的整合
<!--1.将定时任务类交给spring容器--> <bean id="myTask" class="com.zzk.web.controller.task.MyTask"></bean> <!--2.配置jobDetal : 配置需要定时执行的类和方法--> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="myTask"></property> <property name="targetMethod" value="aaa"></property> </bean> <!--3.配置trigger(触发器): 配置时间以及jobdetal关系 --> <bean id="tigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="jobDetail"></property> <!--cron表达式--> <property name="cronExpression" value="0/5 * * * * ? *"></property> </bean> <!--4.配置定时任务管理器: 触发器有可能会有多个,需要统一管理--> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="tigger"></ref> </list> </property> </bean>
cron 七子表达式
0-5 * * * * ? *
0-5 * * * * ?
秒 分 时 日 月 周 年
0-59 0-59 0-23 1-31 1-12 1-7 1970-2099
常用的符号
* 在范围之内任意值
? 放弃(只能出现在日和周的位置 并且只能出现一个)
m/n 从m开始每n执行
m-n 从m开始到n
年的配置(可以省略)
m#n 第n个m
q,w,e,r,t,y 指定时间
L=Last
秒 分 时 日 月 周 年
0-59 0-59 0-23 1-31 1-12 1-7 1970-2099
"0 0 12 * * ?" 每天中午12点整
"0 0/5 14 * * ?" 每天下午14点每5分钟执行一次
"0 0/5 14,18 * * ?" 每天下午14点和18点每5分钟执行一次
"0 0-5 14 * * ?" 每天下午14点从0分到5分钟每分钟执行
"0 10,44 14 ? 3 4" 每年3月的周3下午14点10分和44分
"0 15 10 ? * MON-FRI" 每月的周一到周五上午10点15分
"0 15 10 15 * ?" 每月15号上午10点15分
"0 15 10 L 8 ? 2018" 2018年8月最后一天 上午10点15分
"0 15 10 ? 12 6L 2018" 2018年12月的最后一个周五 上午10点15分
"0 15 10 ? * 6L 2018-2020" 2018年到2020年每月最后一个周五上午10点15分
"0 15 10 ? 12 6#3 2018" 2018年12月第3个周五上午10点15分
七子查询地址:http://cron.qqe2.com/