Spring定时调度

来源:互联网 发布:苹果电脑无法卸载软件 编辑:程序博客网 时间:2024/06/05 11:01
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)
0 0
原创粉丝点击