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

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

使用方法

在spring的xml的配置中开启task
Java|@Scheduled注解执行定时任务
然后启用task,并扫描目录包下的类装配成bean
@Controller @Service @Component @Repository都是声明bean的方式
Java|@Scheduled注解执行定时任务
设置定时任务:
Java|@Scheduled注解执行定时任务

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.定时任务没有返回值
[email protected] 方法上的的注解
3.类需要被spring装配成bean
4.若需要和别的类进行交互,一般通过依赖注入进行