spring 定时器 (TimerTask and Quartz)

本文深入探讨了如何使用Spring框架结合Quartz实现定时任务调度,通过配置示例展示从创建业务逻辑类、定义任务细节到设置触发器直至启动调度器的全过程,包括Quartz核心组件的作用及Quartz.properties文件的配置细节。

TimerTask 

1. class extends TimerTask
2. 配置文件

<?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="reportTask" class="TimerTest.TimerService"/>
  <!-- 配置定时器任务 -->
  <bean id="scheduledReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
    <property name="timerTask">
      <ref bean="reportTask"/>
    </property>
     <property name="period">
      <value>1000</value>
    </property>

  </bean>
  <!-- 启动定时器 -->
  <bean id="start" class="org.springframework.scheduling.timer.TimerFactoryBean">
    <property name="scheduledTimerTasks">
      <list>
      <ref bean="scheduledReportTask"/>
    </list>
    </property>
  </bean>
</beans>


Quartz

(spring.jar,quartz.jar,commons-logging-1.0.4.jar,commons-dbcp-1.2.2.jar,commons-pool-1.3.jar)

1 编写业务类,该类继承了org.quartz.Job,主要的逻辑在execute方法中编写

2

<beans>  
    <!-- 任务逻辑bean -->
    <bean id="businessReport" class="task.BusinessReport" /> 
    
    <!-- 组装任务详细bean -->
    <bean name="reportTask"  
        class="org.springframework.scheduling.quartz.JobDetailBean">  
        <property name="jobClass" value="task.BusinessReport" />  
    </bean>  
  
    <!-- 触发任务bean -->  
    <bean id="cronTrigger"  
        class="org.springframework.scheduling.quartz.CronTriggerBean">  
  
        <!-- 指向我们的详细任务 -->  
        <property name="jobDetail" ref="reportTask" />  
  
        <!--  每天下午16点50分到55分,每分钟运行一次 -->  
        <property name="cronExpression" value="0 50-55 16 * * ?" />  
    </bean>  
  
  
    <!-- 调度器  -->  
<!--
    <bean  
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <list>  
                <!--  触发器列表 -->  
                <ref bean="cronTrigger" />  
            </list>  
        </property>  
        <property name="configLocation" value="classpath:quartz.properties" />   
    </bean> 

 -->

    <!-- 简单调度器  -->  

    <bean  
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <list>  
                <!--  触发器列表 -->  
                <ref bean="cronTrigger" />  
            </list>  
        </property>  
        <property name="configLocation" value="classpath:quartz.properties" />   
    </bean> 




</beans>



3

三 quartz.properties文件的内容(默认放在类路径下)

#============================================================================
# Configure Main Scheduler Properties 
#============================================================================
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false

#============================================================================
# Configure ThreadPool 
#============================================================================
#org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
#org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

#============================================================================
# Configure JobStore 
#============================================================================
#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.misfireThreshold = 60000
#org.quartz.jobStore.useProperties = false
#org.quartz.jobStore.tablePrefix = QRTZ_
#org.quartz.jobStore.dataSource = myDS

#org.quartz.jobStore.isClustered = true
#org.quartz.jobStore.clusterCheckinInterval = 15000

#============================================================================
# Configure DataSource
#============================================================================
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost/test
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password = root
org.quartz.dataSource.myDS.maxConnections = 10






























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值