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