• spring集成quartz


    spring集成quartz

    注意:出现异常“Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class”

    Spring3.0不支持Quartz2.0,由于org.quartz.CronTrigger在2.0从class变成了一个interface造成IncompatibleClassChangeError错误:

    有两种办法:
    第一种减少quartz的版本号为,最好是quartz1.8
    另外一种是升级spring版本号为Spring3.2以上
    注:Spring3.2.4配置文件里使用CronTriggerFactoryBean来集成quartz2.x,
       使用CronTriggerBean来集成quartz1.8.x及曾经版本号.
     
    下面是一个小样例demo
    <!-- 启动触发器的配置開始 -->  
        <bean name="startQuertz" lazy-init="false" autowire="no"  
            class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
            <property name="triggers">  
                <list>  
                    <ref bean="myJobTrigger" />  
                </list>  
            </property>  
        </bean>  
        <!-- 启动触发器的配置结束 -->  
      
        <!-- 调度的配置開始 -->  
        <!--  
            quartz-1.8曾经的配置   
        <bean id="myJobTrigger"  
            class="org.springframework.scheduling.quartz.CronTriggerBean">  
            <property name="jobDetail">  
                <ref bean="myJobDetail" />  
            </property>  
            <property name="cronExpression">  
                <value>0/1 * * * * ?</value>  
            </property>  
        </bean>  
        -->  
        <!-- quartz-2.x的配置 -->  
        <bean id="myJobTrigger"  
            class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
            <property name="jobDetail">  
                <ref bean="myJobDetail" />  
            </property>  
            <property name="cronExpression">  
                <value>0/1 * * * * ?</value>  
            </property>  
        </bean>  
        <!-- 调度的配置结束 -->  
      
        <!-- job的配置開始 -->  
        <bean id="myJobDetail"  
            class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
            <property name="targetObject">  
                <ref bean="myJob" />  
            </property>  
            <property name="targetMethod">  
                <value>work</value>  
            </property>  
        </bean>  
        <!-- job的配置结束 -->  
      
        <!-- 工作的bean -->  
        <bean id="myJob" class="com.tgb.lk.demo.quartz.MyJob" />  
        


    package com.demo.test;


    import java.util.Date;


    /*
     * 使用spring+Quartz运行任务调度的详细类
     * */
    public class MyJob {


        /*
         * Description:详细工作的方法,此方法仅仅是向控制台输出当前时间,
         * 输入的日志在:%tomcatRoot%logs omcat7-stdout.yyyy-MM-dd.log中,
         * 当中,yyyy-MM-dd为部署的日期,经试验发现默认情况下并非每天都生成一个stdout的日志文件
         * @return 返回void
         * */
        public void work()
        {
             System.out.println("当前时间:"+new Date().toString());  
        }
    }//End of MyJob
  • 相关阅读:
    python实现双向链表
    django contenttypes
    tensorflow学习笔记一
    vue指令和事件绑定
    es6简单介绍
    mysql主从复制
    mysql事务
    winform 使用 ReportViewer做报表
    设置控件获取焦点
    修改安卓串口蓝牙app问题记录
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4018687.html
Copyright © 2020-2023  润新知