spring定时任务

作者: 江江的大猪 | 来源:发表于2017-11-15 17:32 被阅读100次

    spring定时任务

    spring提供了异步执行和任务调度的功能,可以简化程序员的工作。这两种功能在spring中是放在一起讲的,很容易看晕,网上的文章也很少有分开讲的,在这里只讲任务调度也就是定时任务的使用方式。可以直接看官方文档34. Task Execution and Scheduling章节。

    本文基于spring4.x,xml配置方式,java config用不惯啊...java config配置的方式直接看上面的spring官方文档对应找吧
    • 基于xml开启spring的任务调度(也可以通过EnableScheduling注解使用java config的方式开启)
    <!--在xml中引入task命名空间-->
    <beans xmlns:task="http://www.springframework.org/schema/task"
           xsi:schemaLocation="http://www.springframework.org/schema/task
           http://www.springframework.org/schema/task/spring-task.xsd">
           <!--开启任务调度的注解驱动,并设置任务调度使用的调度器-->
           <!--不设置scheduler默认使用大小为1的线程池-->
           <task:annotation-driven scheduler="myScheduler"/>
           <!--任务调度的调度器只接受一个线程池的线程数,默认是1-->
           <task:scheduler id="myScheduler" pool-size="10"/>
    </beans>
    
    • 设置需要定时执行的方法(方法所在的类必须被spring管理)
    @Component
    public class SpringTaskDemo {
        //Scheduled注解还有几种设置定时任务的属性,点进去看源码或者百度谷歌,资料很多
        @Scheduled(fixedDelay = 1000)
        public void task() {
            System.out.println("spring scheduled task run");
        }
    }
    
    • 将普通类的方法设置为定时执行
    <task:scheduler id="myScheduler" pool-size="10"/>
    <task:scheduled-tasks scheduler="myScheduler">
        <task:scheduled ref="beanA" method="methodA" fixed-delay="5000" initial-delay="1000"/>
        <task:scheduled ref="beanB" method="methodB" fixed-rate="5000"/>
        <task:scheduled ref="beanC" method="methodC" cron="*/5 * * * * MON-FRI"/>
    </task:scheduled-tasks>
    
    • Tips

    spring的定时任务是一种抽象,即支持jdk,也可以使用第三方开源工具Quartz,timer有关的内容可以看多线程基础中对应的部分

    肥肥小浣熊

    相关文章

      网友评论

        本文标题:spring定时任务

        本文链接:https://www.haomeiwen.com/subject/nujhvxtx.html