quarz组件:企业级定时处理调度组件:
两种实现quarzt组件的实现模式 :
一:要求明确的去即成一个父类
二:利用配置实现方法调度控制,不需要明确集成父类
public class MyTask1 extends QuartzJobBean{
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println(new Date());
}
}
定时调度工厂类:org.springframework.scheduling.quartz.JobDetailFactoryBean
此处表示将要执行的任务控制类在Spring中进行注册,并且告诉容器,谁来执行具体的任务
<bean id="taskFactory1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="cn.mldn.forget.MyTask1"></property>
<property name="jobDataMap"> <map>
<entry key="timeout" value="0"></entry>
</map>
</property>
</bean>
使用间隔触发,例如:若干时间之后可以重复执行;
工厂类:org.springframework.scheduling.quartz.SimpleTriggerFactoryBean
描述的是间隔触发控制
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<!-- 定义间隔触发的执行程序类 -->
<property name="jobDetail" ref="taskFactory1"/>
<!-- 定义的是是具体的触发的延迟时间,如果设置为0,表示立刻触发 -->
<property name="startDelay" value="0"/>
<!-- 间隔触发的频次,间隔时间单位为“毫秒” -->
<property name="repeatInterval" value="2000"/>
</bean>
设置间隔触发调度器:org.springframework.scheduling.quartz.SchedulerFactoryBean
<!-- 定义调度工厂类的配置 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
使用Cron实现定时触发:
Cron表达式(定时表达式)
秒 分 时 日 月 年
秒 分 时 日 月 周
修改为定时触发处理
使用的间隔控制类:org.springframework.scheduling.quartz.CronTriggerFactoryBean
<!-- 使用定时触发处理 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 定义间隔触发的执行程序类 -->
<property name="jobDetail" ref="taskFactory1"/>
<!-- 定义CRON表达式,描述的是每分钟触发一次 -->
<property name="cronExpression" value="0 * * * * ?"/>
</bean>
<!-- 定义调度工厂类的配置 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<refbean="cronTrigger"/>
</list>
</property>
</bean>
SpringTask
Spring 新的集成:
基于applicationContext.xml的配置和Annotation的配置
需要在applicationContext.xml文件中配置task的命名空间
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd
随后进行task操作的配置,首先配置间隔触发:
<bean id="myTask" class="cn.mldn.util.MyTaskA"/>
<task:scheduled-tasks> <!-- 需要配置要执行的作业内容 -->
<task:scheduled ref="myTask" method="runJob" fixed-rate="2000"/>
</task:scheduled-tasks>
使用cron定时触发:
<task:scheduled ref="myTask" method="runJob" cron="* * * * * ?"/>
Annotation定时:
<task:annotation-driven/>
<context:annotation-config />
<context:component-scan base-package="cn.mldn" />
实现类里
@Component
@Scheduled(cron="* * * * * ?")或者@Scheduled(fixedRate=2000)
Spring定时调度
最新推荐文章于 2024-07-25 19:48:48 发布