JAVA之spring定时任务quartz

1、依赖jar包

<!-- 定时任务相关依赖开始 -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.3.RELEASE</version>
</dependency>
<!-- 定时任务相关依赖结束 -->

2、增加配置文件,基于spring的配置文件quartz-source.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-3.0.xsd">

    <!-- 把触发器加入到任务列表中 -->
    <bean id="testScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="quartzJobTestTrigger" />
            </list>
        </property>
    </bean>

    <!-- 定时任务实例化 -->
    <bean id="quartzJobTest" class="com.privates.quartz.QuartzTest" />

    <!-- 定义一个任务 实现JobDetail 指定类及方法 -->
    <bean id="quartzJobTestDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 表示定时任务的类是quartzJobTest这个类,在上文中有定义,spring自动扫描应该也可以 -->
        <property name="targetObject" ref="quartzJobTest"></property>
        <!-- 表示定时任务是要执行那个方法,此方法一定要在上文中的类中 -->
        <property name="targetMethod" value="testQuartz"></property>
    </bean>

    <!-- 触发器 CRON表达式 -->
    <bean id="quartzJobTestTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!-- 要触发哪个任务 -->
        <property name="jobDetail" ref="quartzJobTestDetail"></property>
        <!-- 在什么时间执行,当前的表达式意思是隔5秒执行一次 -->
        <property name="cronExpression" value="*/5 * * * * ?"></property>
    </bean>
</beans>

3、在web中加载定时任务的配置文件,既然及基于spring的配置,那就要在加载spring的配置文件的地方配置,代码如下:

<!-- 定义SPRING配置文件 -->
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/conf/data-source.xml,
    <!--/WEB-INF/conf/dubbo/dubbo-source.xml,-->
    /WEB-INF/conf/memcached/xmemcached.xml,
    /WEB-INF/conf/shior/shior-source.xml,
    /WEB-INF/conf/quartz/quartz-source.xml
  </param-value>
</context-param>

4、启动项目,定时任务已经开始执行了,那么我们再看一下定时任务的时间表达式

Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

表达式例子:
0 * * * * ? 每1分钟触发一次
0 0 * * * ? 每天每1小时触发一次
0 0 10 * * ? 每天10点触发一次
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
0 30 9 1 * ? 每月1号上午9点半
0 15 10 15 * ? 每月15日上午10:15触发

*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点触发
0 0/3 * * * ? 每三分钟触发一次
0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

0 0 12 ? * WED 表示每个星期三中午12点
0 0 17 ? * TUES,THUR,SAT 每周二、四、六下午五点
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发

0 0 23 L * ? 每月最后一天23点执行一次
0 15 10 L * ? 每月最后一日的上午10:15触发
0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发

0 15 10 * * ? 2005 2005年的每天上午10:15触发
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值