package QuartzTest;

import java.util.Date;

public class CourseService ...{
   public void start()...{
       System.out.println(new Date().getSeconds());
   }
}
编写调度类,需要继承QuartzJobBean :
package QuartzTest;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;


public class QuartzJob extends QuartzJobBean ...{    
    
    protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException ...{
        courseService.start();
    }

    private CourseService courseService;

    public CourseService getCourseService() ...{
        return courseService;
    }

    public void setCourseService(CourseService courseService) ...{
        this.courseService = courseService;
    }
    

}
编写配置文件
需要说明的是,我们有两种trigger,分别是simple和cron模式,simple方式和timertask类似,采用设置interval方式进行调度,而cron可以特有的语法很详细的定制调度执行时间,具体描述在配置文件的注释中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
   <bean id="courseService" class="QuartzTest.CourseService"/>
   <!-- 创建调度任务 使用单独编写的调度类QuartzJob    -->
   <bean id="reportJbo" class="org.springframework.scheduling.quartz.JobDetailBean">
     <property name="jobClass">
       <value>QuartzTest.QuartzJob</value>
     </property>
     <property name="jobDataAsMap">
       <map>
         <!--采用jobDataAsMap方式进行courseService注入-->
         <entry key="courseService">
           <ref bean="courseService"/>
          </entry>
       </map>
     </property>
   </bean>

   <!-- 创建调度任务 使用已有的service类方法,不需要单独编写调度类QuartzJob 
   <bean id="reportJbo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
     <property name="targetObject">
      <ref bean="courseService"/>
     </property>
     <property name="targetMethod">
        <value>start</value>
     </property>
   </bean>
    -->
   <!-- 配置调度任务,简单模式   -->
   <bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
      <property name="jobDetail">
        <ref bean="reportJbo"/>
      </property>
      <property name="repeatInterval">
        <value>1000</value>
      </property>
   </bean>
 
   <!-- 配置调度任务,复杂定制模式,月份中的日期和星期不能同时设置   -->
   <bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
      <property name="jobDetail">
        <ref bean="reportJbo"/>
      </property>
      <property name="cronExpression">
        <value>02 20 21 7 6 ? 2007</value> 
        <!-- 1.秒 0-59
             2.分钟 0-59
             3.小时 0-23
             4.月份中的日期 1-31
             5.月份 1-12或者Jan Feb Mar Apr May Jun Jul Aug Sept Oct Nov Dec
             6.星期中的日期 1-7或者MON,TUE,WED,THU,FRI,SAT,SUN.
        -->
      </property>
   </bean>
 
   <!-- 启动调度 -->
   <bean id="start" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
     <property name="triggers">
       <list>
         <ref bean="cronReportTrigger"/>
       </list>
     </property>
   </bean>
</beans>

Spring还为我们提供了更简单的加载调度的方式,也就说我们在已经有业务方法CourseService时不需要再额外编写调度类QuartzJob,可以直接配置service的方法
<bean id="reportJbo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
     <property name="targetObject">
      <ref bean="courseService"/>
     </property>
     <property name="targetMethod">
        <value>start</value>
     </property>
   </bean>

转载于:https://blog.51cto.com/czjmagod/275197

Spring使用Quartz配置调度事务相关推荐

  1. Spring 整合 Quartz 分布式调度

    转载自 Spring 整合 Quartz 分布式调度 本文旨在对 Spring+Quartz 分布式调度有一个直观的了解,通过实际的使用来解决问题. 前言 为了保证应用的高可用和高并发性,一般都会部署 ...

  2. 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题

    解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 参考文章: (1)解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 (2)https://www.cn ...

  3. 使用spring+quartz配置多个定时任务

    首先引入 quartz jar包: 创建java类: package com.tcwl.vsmp.loanmgt.message;import com.tcwl.vsmp.external.const ...

  4. Spring中Quartz调度器的使用 ----继承QuartzJobBean,不继承QuartzJobBean两种方式

    一.Quartz的特点 * 按作业类的继承方式来分,主要有以下两种: 1.作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 2. ...

  5. Spring中Quartz调度器的使用

    一.Quartz的特点 * 按作业类的继承方式来分,主要有以下两种: 1.作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 2. ...

  6. spring的annotation-driven配置事务管理器详解

    来源:http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html 这篇文章是我从ITeye上复制来的,看了一遍,觉得很深刻,决定把他复制来,对原作者表示感 ...

  7. spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库

    spring 配置只读事务 这是有关我们为利用只读副本来提高应用程序性能而寻求的一系列博客文章. 对于这个项目,我们的目标是建立我们的spring数据应用程序,并使用read仓库进行写操作,并基于re ...

  8. spring 配置只读事务_只读副本和Spring Data第3部分:配置两个实体管理器

    spring 配置只读事务 我们之前的设置可以正常工作. 我们现在要做的是进一步发展,并配置两个单独的实体管理器,而不会影响我们之前实现的功能. 第一步是将默认实体管理器配置设置为主要配置. 这是第一 ...

  9. (转载)spring配置hibernate 事务。

    Spring和Hibernate整合后,通过Hibernate API进行数据库操作时发现每次都要opensession,close,beginTransaction,commit,这些都是重复的工作 ...

最新文章

  1. Python:尝试对知乎网验证码进行处理
  2. 初中英语八下单词表(SuperMemo QA文本格式)
  3. [三个版本]自定义int()函数(Python实现)
  4. 如何优化页面的响应速度 以及如何减少项目初次加载时间(转https://www.cnblogs.com/MarcoHan/p/5295398.html)...
  5. Android应用开发SharedPreferences存储数据的使用方法
  6. Java核心类库-IO-打印流(PrintStream/PrintWriter)
  7. 内容分发网络 CDN 是如何提高网页加载时间的?
  8. Jquery学习笔记:删除节点的操作
  9. [转]IIS 允许/禁止 目录浏览
  10. 第78课 通力合作的100个数
  11. Domino下实现仿Google搜索提示效果
  12. python里的正则表达式
  13. RBF神经网络滑模控制
  14. 帝国cms用ajax,帝国CMS7.5二次开发之制作Ajax版登录插件(不改系统文件)
  15. 《大秦帝国之崛起》看后感
  16. 2022前端知识整理:十、vue基础
  17. Docker真正的入门
  18. 读书笔记2区块链与大数据
  19. 因对某产品的一丝质疑而到被洗脑式怼,引起对于社交电商的一丝看法
  20. 初中地理铁路干线总结

热门文章

  1. 系统试图将驱动器合并到合并驱动器上的目录_系统小技巧:“徒手”创建可启动的VHD系统...
  2. poj1509最小表示法
  3. 【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )
  4. 【Android 逆向】Android 逆向基本概念 ( 定位内存中的修改点 | 基址寻址法 | 搜索定位法 )
  5. 【错误记录】发布 Flutter 插件包报错 ( It‘s strongly recommended to include a “homepage“ or “repository“ field )
  6. 【Flutter】Flutter 手势交互 ( 点击事件处理 | 点击 onTap | 双击 | 长按 onLongPress | 点击取消 | 按下 onTapDown | 抬起 onTapUp )
  7. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | LoadedApk 后续分析 )
  8. clipboard_monitor_in_win7
  9. 微信小程序 wx:key 提示-解决
  10. 取得select框的text