Spring+Quartz实现动态定制定时任务并适配各种数据库

在这边记录一下关于使用quartz框架的一些问题和解决方案,其中关于quartz的一些基本使用方式和基本配置都不会提到,网上有关资料特别多。

首先使用quartz有如下几种方式:

1.使用内存机制,采用默认的配置文件,直接在代码当中配置定时任务的执行类以及对应的执行时间。
2.使用数据库,需要新建配置文件quartz.properties配置数据库连接,同时其余如上。
3.结合spring,在xml文件中配置SchedulerFactoryBean,CronTriggerFactoryBean,MethodInvokingJobDetailFactoryBean,外加一个任务执行类的容器,合计4个Bean,就能够完成一个定时任务的配置,无需任何代码片段,除过执行类。
4.结合spring,但是任务内容和执行时间都由用户动态制定,此时在配置文件中配置一个SchedulerFactoryBean即可,然后在动态获取这个容器,往其中按照方式1的方法添加内容。
其实往大的方向说,quartz有两种模式:集群和非集群。只不过集群模式必须使用数据库,同时需要在配置文件中的org.quartz.jobStore.isClustered = true,这样即可。
我参与的项目重点使用了3和4,3主要完成一些比较常规的定时任务,比如定时更新数据库类似的任务。而4就是完成用户自己的需求。
现在开始讲解整个过程:
1.基本配置
首先看一下applicationContext-quartz.xml

    <!-- schedulerBean -->
    <bean id="chedulerFactoryBean"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <!-- 指定quartz配置文件 -->
        <property name="configLocation" value="classpath:quartz.properties" />
         <!--必QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动,单位秒 -->    
        <property name="startupDelay" value="3" />    
        <!-- 设置自动启动 -->    
        <property name="autoStartup" value="true" />  
        <property name="applicationContextSchedulerContextKey" value="applicationContextKey" />
        <property name="schedulerName" value="DefaultQuartzScheduler" />
        <property name="dataSource" ref="dataSource"/>
    </bean>

其中的参数都比较简单,就是关于dataSource的话,使用的是spring的配置,而不是在配置文件quartz.properties的配置,所以配置文件中就不需要配置了。下面是dataSource的配置:


    <!-- 数据源配置, 使用Tomcat JDBC连接池 -->
    <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <property name="maxActive" value="${jdbc.pool.maxActive}" />
        <property name="maxIdle" value="${jdbc.pool.maxIdle}" />
        <property name="minIdle" value="0" />
        <property 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值