spring的任务调度

Spring的任务调度一
在我们的项目系统中,会有很多按照每隔多少时间段去处理某些业务逻辑,比如OA系统,每隔一段时间,自动检测是否有邮件到达、负责运行用户事先决定在特定时间运行的任务等​,spring主要有两种方式,一是JDK Timer,二是Quartz Scheduler。
第一种:
1.继承TimerTask创建任务

//Timer任务类需要继承TimerTask类
public class CheckTimer extends TimerTask
{
//继承TimerTask抽象类必须实现的方法
public void run() {
System.out.println(new java.util.Date());
}
}
2.通过Spring的ScheduledTimer来包装任务

<!-- 包装目标任务 -->
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!-- 确定任务调度的延迟时间(毫秒) -->
<property name="delay" value="0"/>
<!-- 确定任务调度的间隔时间(毫秒) -->
<property name="period" value="86400000"/>
<!-- 确定任务调度的目标任务 -->
<property name="timerTask" ref="checkWiner"/>
</bean>
3.通过Spring的TimerFactoryBean工厂启动任务
<!-- 配置启动调度 -->
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<!-- 需要启动的任务,该任务已具备调度属性 -->
<property name="scheduledTimerTasks">
<list>
<!-- list 下列出所有需要调度的任务 -->
<ref bean="scheduledTask"/>
</list>
</property>
</bean>

<!-- 任务调动的bean类 -->
<bean id="checkWiner" class="com.jgh.quartz.CheckTimer"></bean>

Spring的任务调度二
第二种:
1. 导入 quartz.jar
通过MethodInvokingJobDetailFactoryBean包装任务
<!-- 包装任务调度Bean -->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 定义目标Bean -->
<property name="targetObject" ref="job"/>
<!-- 定义目标Bean中的方法 -->
<property name="targetMethod" ref="doAuth"/>
</bean>

2.配置触发器
Spring封装了两种常用的TriggerBean:
SimpleTriggerBean,可以周期性地执行Job。
CronTriggerBean功能更为强大,能指定何时执行Job。
SimpleTriggerBean配置:
<!-- 周期性运行checkDiskJob -->
<bean id="repeatTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- 确定任务调度的目标任务 -->
<property name="jobDetail" ref=" jobtask " />
<!-- 确定任务调度的延迟时间(毫秒) -->
<property name="startDelay" value="60000" />
<!-- 确定任务调度的间隔时间(毫秒) -->
<property name="repeatInterval" value="300000" />
</bean>
CronTriggerBean配置:
<!-- 定时运行reportJob -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 确定任务调度的目标任务 -->
<property name="jobDetail" ref=" jobtask " />
<!-- 每周周一至周五中午12:00执行 -->
<property name="cronExpression" value="0 0 12 ? * MON-FRI" />
</bean>

3.通过Spring的SchedulerFacotryBean工厂启动任务
<!-- 建立实际调度 -->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 指定调度使用的触发器列表 -->
<property name="triggers">
<list>
<ref bean="repeatTrigger" />
<ref bean="cronTrigger" />
</list>
</property>
</bean>
<bean id="job" class="com.jgh.quartz.QuartzJob"></bean>

你可能感兴趣的:(spring 任务 调度)