任务调度--spring下的任务调度quartz
之前写过Timer实现任务调度,这篇文章用来写一下在spring下使用quartz实现任务调度,直接上代码: 
定义任务对象:
package com;
/**
 * 1. 定义任务对象
 *
 * @author Administrator
 *
 */
public class DataBackup {
    //提供任务方法 - 任务实现的内容
    public void backup(){
        System.out.println("备份数据库");
    }
}
spring的配置文件
<!-- 该配置文件为spring的基本配置文件, springmvc,aop ,transaction等的配置均在此基础上进行 -->
<beans xmlns= "http://www.springframework.org/schema/beans"
      xmlns:context= "http://www.springframework.org/schema/context"
      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.2.xsd
           http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-3.2.xsd
        " >
     <context:component-scan base-package ="com"/>
      <!-- 2.将任务对象交给ioc容器管理
      -->
      <bean id="bu" class="com.DataBackup"> </bean>
    <!--  3. 设置任务调度细节
                                 任务内容有哪个任务对象提供,这个对象中有哪个方法 -->
       <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
         <property name="targetObject" ref="bu"></property>
         <property name="targetMethod" value="backup"></property>
       </bean>
     <!--    4.设置这个任务调度jobdetail执行的时间、周期
                >为哪个任务分配执行时间和周期
                    setJobDetail(JobDetail detail)
                >分配执行周期
                    setCronExpression(string expression)
                                            通过一个表达式- cron表达式
                         [秒    0-59 *
                                                           分   0-59 *
                                                           时    0-23 *
                                                           月内日期   1-31 *
                                                           月   1-12 *
                                                           周内日期    0-6 *
                                                           年    可选 1970-2099
                                                          ?   只能出现在月内日期和周内日期字段中,表示该字段无关紧要 放在月内日期或周内日期的位置
                                                                当指定了月内日期 周内日期无需指定
                          /  增量值 写在/后
                          # 第几个 0 10 9 ? 1 2#2  一月的第二个星期二
                          W 工作日  1W 一月的第一个工作日
                          L 最后一个实例  1L一月的最后一天
                          ]
     -->
       <bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
             <property name="jobDetail" ref="jobDetail"></property>
             <property name="cronExpression" value="0 * * * * ?"></property>
       </bean>
      <!--5  配置总调度类  将之前配置的任务调度的过程加载到容器中-->
        <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
                  <property name="triggers">
                    <list>
                        <ref bean="trigger"/>
                    </list>
                  </property>
        </bean>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
 </listener-class>
 </listener>
     <!-- 配置spring分发器,spring表示对应的 servlet【名可以改】配置文件为spring-servlet.xml -->
     <servlet >
            <servlet-name >spring </servlet-name >
           <servlet-class >org.springframework.web.servlet.DispatcherServlet </servlet-class >
     </servlet >
     <servlet-mapping >
      <!-- 会拦截.do请求-->
            <servlet-name >spring </servlet-name >
            <url-pattern >*.do </url-pattern >
     </servlet-mapping >
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
quartz中常用的表达式: 
“0 0 12 * * ?” 每天中午12点触发  
    “0 15 10 ? * *” 每天上午10:15触发  
    “0 15 10 * * ?” 每天上午10:15触发  
    “0 15 10 * * ? *” 每天上午10:15触发  
    “0 15 10 * * ? 2005” 2005年的每天上午10:15触发  
    “0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发  
    “0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发  
    “0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发  
    0 0/5 8-10,12-16,20-22 * * ?
"0 0-10/2 14 * * ?" 在每天下午2点到下午2:05期间的每2分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
每天早上6点  0 0 6 * * * 
每两个小时   0 * /2  * *  
23到次日早上7点,每隔2小时 , 以及8点执行 
    0 0 23-7/2,8 * * ? 
1-3月,每天的4点11分执行  
0 11 4 * 1-3 ?
0 4 1 1 * ?
版权声明:本文为博主原创文章,未经博主允许不得转载。
任务调度--spring下的任务调度quartz的更多相关文章
- Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
		Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ... 
- Spring框架下的定时任务quartz框架的使用
		手头的这个项目需要用到定时任务,但之前没接触过这东西,所以不太会用,从网上找资料,大致了解了一下,其实也不难.Java的定时任务实现有三种,一种是使用JDK自带的Timer那个类来实现,另一种是使用q ... 
- Spring/Spring boot正确集成Quartz及解决@Autowired失效问题
		周五检查以前Spring boot集成Quartz项目的时候,发现配置错误,因此通过阅读源码的方式,探索Spring正确集成Quartz的方式. 问题发现 检查去年的项目代码,发现关于QuartzJo ... 
- SpringBoot系列:Spring Boot集成定时任务Quartz
		一.关于Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.在java企业级应用中,Q ... 
- 在Spring下集成ActiveMQ
		1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ... 
- 单元测试之获取Spring下所有Bean
		单元测试中,针对接口的测试是必须的,但是如何非常方便的获取Spring注册的Bean呢? 如果可以获取所有的Bean,这样就可以将这个方法放到基类中,方便后面所有单元测试类的使用,具体实现如下: im ... 
- spring利用javamail,quartz定时发送邮件 <转>
		原文地址:spring利用javamail,quartz定时发送邮件 <转>作者:物是人非 spring提供的定时发送邮件功能,下面是一个简单的例子以供大家参考,首先从spring配置文件 ... 
- 【Hibernate学习笔记-3】在Spring下整合Hibernate时, 关于sessionFactory的类型的说明
		摘要 在Spring下整合Hibernate时,关于sessionFactory的配置方式主要有两种,分别为注解配置方式,和xml配置方式,下面将对这两种配置方式进行介绍. 1. sessionFac ... 
- spring多个定时任务quartz配置
		spring多个定时任务quartz配置 <?xml version=”1.0″ encoding=”UTF-8″?> <beans xmlns=”http://www.spring ... 
随机推荐
- navicat为mysql建立索引
			索引的目的是大大提高查询效率,还有读写效率. kettle向sql里面插入,更新时,也要建立索引,可以大大提升处理时间. 但是建立索引报错:Specified key was too long; ma ... 
- Android Xlistview的源码浅度分析 监听ListView上下滑动 以及是否到顶和底部
			如转载 请注明出处 http://blog.csdn.net/sk719887916 比如我们很多项目中会用到listview 并且要对listview滑动方向进行判断 也有需要的到listview是 ... 
- RHEL6.4安装nginx
			RHEL6.4安装nginx 下载nginx-1.6.1.tar.gz, 解压进入目录: $ yum install pcre-devel $ ./configure --with-http_ssl_ ... 
- 如果去掉UITableView上的section的headerView和footerView的悬浮效果
			项目需要cell的间距,又不需要悬浮效果,百度之后找到这个方法,记录一下,备忘. 用UIScrollView的代理方法实现 - (void)scrollViewDidScroll:(UIScrollV ... 
- JS实现鼠标滚动事件,兼容IE9,FF,Chrome.
			<!-- 废话不多说,直接贴代码 --><script type="text/javascript" src="jquery.min.js"& ... 
- weblogic上服务器建立
			weblogic上服务器建立 
- JAVA学习总结-面向对象
			前言:java面向对象中的知识可以说是整个java基础最核心的部分,不知不觉已经学完快2个月了,是时候复习一波了,刚开始学习的时候被绕的很懵逼,这次总结完毕之后有了很多新的感悟,这就是所谓的每有会意, ... 
- 免费私有gitLab服务推荐
			阿里云code :https://code.aliyun.com/,可以免费开50个私有项目. 配套的持续交付:https://crp.aliyun.com 
- 自己用 Netty 实现一个简单的 RPC
			目录: 需求 设计 实现 创建 maven 项目,导入 Netty 4.1.16. 项目目录结构 设计接口 提供者相关实现 消费者相关实现 测试结果 总结 源码地址:github 地址 前言 众所周知 ... 
- (五)SpringBoot2.0基础篇- Mybatis与插件生成代码
			SpringBoot与Mybatis合并 一.创建SpringBoot项目,引入相关依赖包: <?xml version="1.0" encoding="UTF-8 ... 
