• spring4 定时任务


    一、spring 定时任务

    spring 定时任务 ,最好使用quartz 实现。下面我以spring4为例

    二、实战(默认)

    1、pom配置

                    <!-- spring time task -->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>1.8.4</version>
            </dependency>        

    2、bean 配置

    <?xml version="1.0" encoding="gb2312"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
        default-autowire="byName">
        
        <bean name="myTaskJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
            <property name="jobClass" value="com.yuanmeng.spring.TaskDemo" />  
            <property name="jobDataAsMap">  
                <map>  
                <entry key="timeout" value="36000" />  
                </map>  
            </property>  
        </bean>  
        
        <bean id="myTaskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
            <property name="jobDetail" ref="myTaskJob" />  
            <property name="startDelay" value="3000" />
            <property name="repeatInterval" value="60000" /><!-- 每600秒调度一次 -->  
        </bean>  
    <!--启动任务--> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="myTaskTrigger" /> </list> </property> </bean> </beans>

    3、定时java类, 继承 QuartzJobBean

    package com.yuanmeng.spring;
    
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    
    public class TaskDemo extends QuartzJobBean {
        
        private static int i = 0;
    
        @Override
        protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
            
            
            
            System.out.println("--------- begin ---------");
            
            System.out.println(" i = " + i++);
            
            
            System.out.println("--------- end ---------");
        }
    
        
    }

    4、启动

    package com.yuanmeng.spring;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.scheduling.quartz.JobDetailBean;
    
    public class Client {
    
        public static void main(String[] args) {
    
            ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring/spring-timetask.xml");
    
            org.springframework.scheduling.quartz.JobDetailBean bean = (JobDetailBean) ac.getBean("myTaskJob");
            
            System.out.println(bean != null);
    
        }
    }

    5、看下结果

    --------- begin ---------
     i = 0
    --------- end ---------
    --------- begin ---------
     i = 1
    --------- end ---------
    --------- begin ---------
     i = 2
    --------- end ---------
    --------- begin ---------
     i = 3
    --------- end ---------
    --------- begin ---------
     i = 4
    --------- end ---------
    --------- begin ---------
     i = 5
    --------- end ---------
    --------- begin ---------
     i = 6
    --------- end ---------
    --------- begin ---------
     i = 7
    --------- end ---------
    --------- begin ---------
     i = 8
    --------- end ---------
    --------- begin ---------
     i = 9
    --------- end ---------
    --------- begin ---------
     i = 10
    --------- end ---------
    --------- begin ---------
     i = 11
    --------- end ---------
    --------- begin ---------
     i = 12
    --------- end ---------

    三、实战(不继承)

    1、bean 配置

        <bean id="myTask" class="com.yuanmeng.spring.TaskDemo2" />
    
        <bean id="jobDetail"
            class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <!-- 指定定时任务执行类 -->
            <property name="targetObject" ref="myTask" />
            <!-- 指定定时任务执行方法 -->
            <property name="targetMethod" value="doIt" />
            <property name="concurrent" value="false" />
        </bean>
    
        <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            
            <property name="jobDetail" ref="jobDetail" />
            
            <property name="startDelay" value="5000" />
            
            <property name="repeatInterval" value="3000" />
        </bean>
    
        <!-- 总调度用于启动Spring定时器 -->
        <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="simpleTrigger" />
                </list>
            </property>
        </bean>

    2、自定义任务类

    package com.yuanmeng.spring;
    
    public class TaskDemo2 {
    
        private static int i = 0;
    
        public void doIt() {
    
            System.out.println("---------doIt begin ---------");
    
            System.out.println(" i = " + i++);
    
            System.out.println("---------doIt end ---------");
        }
    
    }

    3、启动

    ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring/spring-timetask2.xml");

    4、结果

    ---------doIt begin ---------
     i = 0
    ---------doIt end ---------
    ---------doIt begin ---------
     i = 1
    ---------doIt end ---------
    ---------doIt begin ---------
     i = 2
    ---------doIt end ---------
    ---------doIt begin ---------
     i = 3
    ---------doIt end ---------
    ---------doIt begin ---------
     i = 4
    ---------doIt end ---------
    ---------doIt begin ---------
  • 相关阅读:
    markdown语法---根据使用不断扩充中
    Linux命令(七)查找文件或目录 find
    Linux命令(六) 查看文件 cat tac more less tail
    Linux命令(五)创建文件或修改文件时间 touch
    Linux终端常用快捷键
    Linux命令(四)删除文件 rm
    实现免密码输入 ssh 登录
    jenkins 进阶系列网址
    shell与if相关参数
    安装tomcat过程中出现问题小结
  • 原文地址:https://www.cnblogs.com/chenmo-xpw/p/6069138.html
Copyright © 2020-2023  润新知