失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 在Spring项目中使用@Scheduled注解定义简单定时任务

在Spring项目中使用@Scheduled注解定义简单定时任务

时间:2024-03-09 14:40:47

相关推荐

在Spring项目中使用@Scheduled注解定义简单定时任务

如题所示,有时候我们需要在Web项目中配置简单的定时任务,而且因为任务并不复杂不想使用定时调度框架(PS:Quartz、ActiveMQ 、Kafka等),这时就可以考虑使用@Scheduled注解来定义简单的定时任务。其全部配置如下:

(1)在Spring的配置文件中添加定时任务相关配置:

xml配置的头文件中添加:

xmlns:task="/schema/task"

以及在xsi:schemaLocation中添加:

/schema/task/schema/task/spring-task-4.0.xsd

最后添加:

<context:component-scanbase-package="cn.zifangsky.task"/><task:executorid="executor"pool-size="5"/><task:schedulerid="scheduler"pool-size="10"/><task:annotation-drivenexecutor="executor"scheduler="scheduler"/>

其中,这里首先定义了Spring自动扫描定时任务所在的package,也就是“cn.zifangsky.task”。接着定义了两个线程池以及启用定时任务的扫描机制

(2)添加测试任务:

packagecn.zifangsky.task;importjava.text.Format;importjava.text.SimpleDateFormat;importjava.util.Date;importorg.springframework.scheduling.annotation.Scheduled;importorg.ponent;@ComponentpublicclassSimpleSpringTask{/***每次任务执行完之后的2s后继续执行*/@Scheduled(fixedDelay=2000)publicvoidsay(){Datecurrent=newDate();Formatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");System.out.println("--------"+format.format(current)+"---------");}/***0秒的时候打印*/@Scheduled(cron="0****?")publicvoidprint(){System.out.println("当前是整分!!!");}}

上面第一个任务定义了每个任务执行完之后的2s之后再次执行,如果需要强制指定每隔多少时间执行一次任务,可以将上面的fixedDelay改成fixedRate,如:

/***每隔两秒执行一次本方法*/@Scheduled(fixedRate=2000)publicvoidsay(){Datecurrent=newDate();Formatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");System.out.println("--------"+format.format(current)+"---------");}

当然,上面的第二种任务形式类似于Linux下的crontab定时任务,几个参数位分别表示:秒、分钟、小时、天(每月中的天)、月份以及星期

注:如果想要了解更多的关于Linux中使用crontab命令的用法可以参考我的这篇文章:/591.html

(3)测试:

运行这个项目后,最后控制台中的输出如下:

PS:上面图片中的水印是我个人博客的域名,因此还请管理员手下留情不要给我标为“转载文章”,谢谢!!!

如果觉得《在Spring项目中使用@Scheduled注解定义简单定时任务》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。