Spring定时任务

Spring提供了一个很简单的方法做定时任务,我之前用过quartz,这个虽然也是spring的定时任务技术,但是我感觉quartz任然是比较复杂的。关于quartz实现定时任务这里就不详细讲解了。今天主要讲解利用spring task:注解主动注入定时任务

 1 首先需要在spring-context.xml文件中引入下列代码。pool-size 定义了任务池的大小。

	<!-- 计划任务配置,用 @Service @Lazy(false)标注类,用@Scheduled(cron = "0 0 2 * * ?")标注方法 -->
	<task:executor id="executor" pool-size="10" />
	<task:scheduler id="scheduler" pool-size="10" />
	<task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true" />
	<!-- 每隔5秒执行一次:*/5 * * * * ? -->
	<!-- 每隔1分钟执行一次:0 */1 * * * ? -->
	<!-- 每天23点执行一次:0 0 23 * * ? -->
	<!-- 每天凌晨1点执行一次:0 0 1 * * ? -->
	<!-- 每月1号凌晨1点执行一次:0 0 1 1 * ? -->
	<!-- 每月最后一天23点执行一次:0 0 23 L * ? -->
	<!-- 每周星期天凌晨1点实行一次:0 0 1 ? * L -->
	<!-- 在26分、29分、33分执行一次:0 26,29,33 * * * ? -->
	<!-- 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ? -->

2 根据1 中的第一行注释。我们新建一个TaskScheduService类并用@Service @Lazy(false)标注,类中我定义了两个测试方法,第一个方法每个5秒钟执行一次,第二个方法在每个小时的 56分钟执行一次。(具体的执行时间乐意根据 1 中的注释进行配置)

@Service
@Lazy(false)
public class TaskScheduService {
	
	@Scheduled(cron = "*/5 * * * * ?")
	public void testTaskSchedu(){
		System.out.println("每隔5秒执行一次"+new Date());
	}
	
	@Scheduled(cron = "0 56,29,33 * * * ?")
	public void testTaskSchedu2(){
		System.out.println("在55分、29分、33分执行一次"+new Date());
	}
}
3 启动项目看结果 下面是我的程序和结果 代码中有一个错 第28行应该输出在 56分......



利用spring的task注解注册任务,是很简单的。

但是 利用quartz做定时任务有一个好处是,定时任务的启动时间可以在xml中配置,在项目发布后,运维人员都可以修改启动时间的条件,重新启动即可,但是利用spring的task注解注册的任务启动时间的条件是在java代码中写的,如果要修改条件,修改后必须重新编译才能部署。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值