Spring定时调度

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值