@Scheduled注解实现定时任务

一、创建一个Springboot项目在启动类里加上@EnableScheduling

        

@SpringBootApplication
@EnableScheduling
public class NeighborApplication {

	public static void main(String[] args) {
		SpringApplication.run(NeighborApplication.class, args);
	}

}

二、在写的定时任务的类上加上@Component把该类交由springboot管理

三、在需要做定时操作的方法上加上@Scheduled(cron = " ")注解

@Slf4j
@Service
@AllArgsConstructor
@Component
@EnableScheduling
public class ScheduledService {
//
    private static final String SCHEDULED_ZONE = "GMT+8:00";

    //2点执行一次
    @Scheduled(cron = "0 0 2 * * ?", zone = SCHEDULED_ZONE)
    public void expiredAutomaticRefund() {
        log.info("我是定时任务执行的,现在时间为:[{}]", new Date());
    }

}

四、cron表达式(定时任务通过cron表达式控制定时时间)

1、符号示意

'*' : 表示所有可能的值
'/' : 表示数值的增量,简单来说,比如分写上0/5表示从0分开始,每隔5分钟
'?' : 仅用在天(月)和天(周),表示不指定值,当其中一个有值时,另外一个需要设为?

2、字段允许字符

(1)秒:0-59 , - * /
(1)、26:表示第26秒
(2)、5,16,27:表示第5秒、第16秒和第27秒
(3)、1-5:表示从1秒到5秒,就是1 2 3 4 5 秒
(4)、*:表示每一秒
(5)、2/15:表示从第2秒开始,每隔15秒,就是2 17 32 47 秒
(2)、分:0-59 , - * /
(1)、26:表示第26分钟
(2)、5,16,27:表示第5分钟、第16分钟和第27分钟
(3)、1-5:表示从1秒到5分,就是第1 2 3 4 5 分钟
(4)、*:表示每一分钟
(5)、2/15:表示从第2分钟开始,每隔15分钟,就是2 17 32 47 分钟
(3)、时:0-23 , - * /
(1)、10:表示早上10点
(2)、22:表示晚上10点
(3)、2,8,18,23:表示凌晨2点,早上8点,傍晚6点和晚上11点
(4)、9-17:表示朝九晚五,就是9 10 11 12 13 14 15 16 17 点
(5)、*:表示每小时
(6)、10/2:表示从早上10点开始,每隔2小时
(4)、天(月):1-31 , - * / ? L W C
(1)、31:表示31号(注意有的月份是没有31号的)
(2)、5,10,15:表示5号、10号和15号
(3)、8-17:表示8号到17号
(4)、*:表示所有可能的值(当指定为星号时,天(周)需指定为?)
(5)、5/9:表示从5号开始,每隔9天
(6)、?:当天(周)指定任意值的时候,天(月)需要设置为?
(7)、L:表示一个月中的最后一天
(8)、6L:表示倒数第6天
(9)、15W:W指工作日,如果15号不是周六日,则表示15号当天;如果15号是周六,则表示14号;如果15号是周日,则表示16号;如果31W是周日,则31W表示29号(周五),不会跨月
(10)、LW:指最后一个工作日
(11)、15C:表示第15天(不是很明白这个,使用15和15C貌似效果相同?)
(5)、月:1-12 , - * /
(1)、10:表示10月份
(2)、5,10,11:表示5月份、10月份和11月份
(3)、4-8:表示4月份到8月份
(4)、*:表示所有可能的值
(5)、5/2:表示从5月份开始,每隔2个月,(就是5 7 9 11 次年5 次年7 次年9......)
(6)、1-12:也可以用JAN-DEC表示
(6)、天(周):MON-SAT , - * / ? L C
(1)、MON:表示周一
(2)、MON,TUE,FRI:表示周一,周二和周五
(3)、MON-FRI:表示从周一到周五
(4)、MON-WED,SAT:表示从周一到周三,和周六(就是周一、周二、周三和周六)
(5)、mon,tue,wed,thu,fri,sat,sun:表示周一到周日(大小写均可,取星期英文前三个字母,注意星期四是thu,而不是thur)
(6)、7L:表示最后一个周六(效果等同于SATL)(L表示last最后的意思,7表示周六,6表示周五,类推,1表示周日)
(7)、6C:表示周五以及之后包含周五的日期(感觉效果FRI一样,具体还没深究)
(8)、7#2:表示第二个周六(#前面的数字表示星期,1表示周日,2表示周一,以此类推;#后面的数字表示第几个)
(7)、年:留空 2020-2099 , - * /
(1)、2050:表示2050年
(2)、2020,2030,2040:表示2020年、2030年和2040年
(3)、2020-2030:表示2020年到2030年
(4)、*:表示所有可能的值
(5)、2020/10:表示从2020年开始,每隔10年,(就是2020,2030,2040......)

四、启动项目即可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值