Spring使用Quartz配置调度事务

首先编写服务类:

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>

时间: 2024-11-08 02:16:58

Spring使用Quartz配置调度事务的相关文章

spring context.xmL配置数据库事务以及aop

!-- from the file context.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"     xmlns:aop

spring学习总结(mybatis,事务,测试JUnit4,日志log4j&amp;slf4j,定时任务quartz&amp;spring-task,jetty,Restful-jersey等)

在实战中学习,模仿博客园的部分功能.包括用户的注册,登陆:发表新随笔,阅读随笔:发表评论,以及定时任务等.Entity层设计3张表,分别为user表(用户),essay表(随笔)以及comment表(评论).表结构如下: 项目开发采用Intellij IDEA + maven,整个项目结构如下如下图所示: 在项目的pom.xml文件中,导入项目需要的依赖.pom.xml内容如下所示: 1 <project xmlns="http://maven.apache.org/POM/4.0.0&q

Spring整合quartz框架实现任务定时调度

1.  首先需要引入需要的jar包,如上图所示. 2. 编写需要定时调度的测试类: package com.jp.task; import java.util.Date; public class TestTask{ private static int counter = 0; protected void execute() { long ms = System.currentTimeMillis(); System.out.println("\t\t" + "=====

Spring+监听器+Quartz集群(1)——基本配置

先说说项目背景,因为业务需求,项目中有很多定时任务,这自然用到了Quartz这个开源产品.而在这之前使用的Quartz主要是基于内存的,在应用程序启动时,由监听器创建定时任务,为了防止多个应用程序重新创建任务,只能在发布时,在另外的web.xml中禁用监听器.这样系统发布变得麻烦,因为不同的应用程序的配置不同. 除了发布麻烦,还有不能发挥集群的优势,一旦运行任务的服务器崩溃,集群中的其他服务器不能接受定时任务. 为了解决以上的两个问题,在系统中使用Quartz集群,同时考虑到系统中创建定时任务的

Spring中Quartz的配置

软件152苏锐 Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:首先我们来写一个被调度的类: package com.kay.quartz;public class QuartzJob{ public void work()    {    System.out.println("Quartz的任务调度!!!");    }} Spring的配置文件: <?xml version="1.

Spring基础 Quartz的配置

Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz: 首先我们来写一个被调度的类: package com.kay.quartz; public class QuartzJob { public void work() { System.out.println("Quartz的任务调度!!!"); } } Spring的配置文件: <?xml version="1.0" encod

Spring中Quartz调度器的使用

一.Quartz的特点 * 按作业类的继承方式来分,主要有以下两种: 1.作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 2.作业类不继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 注:个人比较推崇第二种,因为这种方式下的作业类仍然是POJO. * 按任务调度的触发时机来分,主要有以下两种: 1.每隔指定时间则触发一次,对应的调度器为org.springf

Spring结合java Quartz配置实例代码

原文:Spring结合java Quartz配置实例代码 源代码下载地址:http://www.zuidaima.com/share/1787232442715136.htm 各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务.对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每半个小时查询用户是否已经有快到期的待处理业务--,这样的例子俯拾皆是,不胜枚举.

spring事务管理,xml配置aop事务和注解配置aop事务

xml配置和注解配合共同代码 AccountService.java public interface AccountService { //转账方法 void transfer(Integer from,Integer to,Double money); } AccountServiceImpl.java xml配置aop事务的AccountServiceImpl.java public class AccountServiceImpl implements AccountService {