Java|@Scheduled注解执行定时任务

之前一直是用的Timer实现定时任务
今天知道了有这样一种简单的注解方式执行定时任务:

使用方法

在spring的xml的配置中开启task
这里写图片描述
然后启用task,并扫描目录包下的类装配成bean
@Controller @Service @Component @Repository都是声明bean的方式
这里写图片描述
设置定时任务:
这里写图片描述

cron的规则如下:

econds (秒) :可以用数字0-59 表示
Minutes(分) :可以用数字0-59 表示
Hours(时) :可以用数字0-23表示
Day-of-Month(天) :可以用数字1-31 中的任一一个值,但要注意一些特别的月份
Month(月) :可以用0-11 或用字符串 “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示
Day-of-Week(每周):可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON, TUE, WED, THU, FRI and SAT”表示
“/”:为特别单位,表示为“每”如“0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行
“?”:表示每月的某一天,或第周的某一天
“L”:用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”
“W”:表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”
““#”:是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为”6#3” or “FRI#3” 则表示“每月第三个星期五”

这样的注解可以很方便的得到如母亲节之类的日期
“?”和“*”的区别有人可能不懂
比方我上面的规则
0/5 * * * * ?
意思是0秒开始5秒执行一次 但是日期和星期是会冲突的
?表示不确定 也就是说日期和星期几一个为*另一个只能为?

注意事项

1.定时任务没有返回值
2.@Scheduled 方法上的的注解
3.类需要被spring装配成bean
4.若需要和别的类进行交互,一般通过依赖注入进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值