springboot 定时器定时任务

项目中经常遇到一些需求就是需要你判断某个值是否到达要求的值或者某个条件下需要你执行某个动作,但你又不能一直判断,这时候我们需要使用定时器去设定某个时间去判断是否达到某个条件.
上干货,我使用的是spring中的定时器.我建立的是springboot项目.代码非
常简单.

以下是我的代码:

package com.example.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author zjg
 * @day 18-2-5
 * @description
 */
@Slf4j
@Component //使spring管理
@EnableScheduling //定时任务注解
public class Timer {

    /**
     * 每天晚上21:50运行
     */
    @Scheduled(cron = "0 50 21 * * ?")
    public void initTimerOne(){
        log.info("我是在晚上21:50:00 定时器运行");
    }

    /**
     * 每天晚上21:50:30运行
     */
    @Scheduled(cron = "30 50 21 * * ?")
    public void initTimerTwo(){
        log.info("我是在晚上21:50:30 定时器运行");
    }

}

效果如下图

这里写图片描述

@Component 这个注解是为了让spring管理这个类

@EnableScheduling 这个注解是定时任务的注解,这个注解添加在定时的类上或者Application类上都可以,效果是一样的.

@Scheduled 这个注解加在方法上,注明这是一个定时方法.

@Scheduled里面的参数讲解一下
scheduled表达式规则如下:

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素
从左往右依次代表
1.Seconds Minutes Hours DayofMonth Month DayofWeek Year
2.Seconds Minutes Hours DayofMonth Month DayofWeek

每个域中字符如下:
Seconds: 可出现”, - * /”四个字符,有效范围为0-59的整数
Minutes: 可出现”, - * /”四个字符,有效范围为0-59的整数
Hours: 可出现”, - * /”四个字符,有效范围为0-23的整数
DayofMonth :可出现”, - * / ? L W C”八个字符,有效范围为0-31的整数
Month: 可出现”, - * /”四个字符,有效范围为1-12的整数或JAN-DEc
DayofWeek: 可出现”, - * / ? L C #”四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year: 可出现”, - * /”四个字符,有效范围为1970-2099年

举些例子:

每隔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 * * ?”

表示在每月的1日的凌晨2点调度任务:”0 0 2 1 * ? *”

表示周一到周五每天上午10:15执行作业:”0 15 10 ? * MON-FRI”

表示2002-2006年的每个月的最后一个星期五上午10:15执行:”0 15 10 ? 6L 2002-2006”

Spring Boot定时器是一种可以在指定时间间隔内执行任务的功能。它可以使用`@EnableScheduling`注解来开启定时器功能,并且通过`@Scheduled`注解来指定任务的执行时间。 在Spring Boot项目中,可以创建一个定时任务配置类,使用`@Configuration`和`@EnableScheduling`注解来标识该类是一个配置类,并开启定时功能。然后,可以在该类中定义具体的定时任务方法,使用`@Scheduled`注解来指定任务的执行时间。比如,在给定的示例代码中,`SchedulingConfig`类中的`getToken()`方法被标记为定时任务,使用`@Scheduled(cron = "*/5 * * * * ?")`来指定每5秒执行一次。 另外,可以在定时任务方法中调用其他业务逻辑方法。例如,在给定的示例代码中,`getToken()`方法中调用了`testService.test("刚刚")`方法来执行具体的业务逻辑。 总结来说,Spring Boot定时器通过使用`@EnableScheduling`和`@Scheduled`注解来开启和指定定时任务的执行时间,可以执行一些需要在固定时间间隔内运行的任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring boot实现定时器](https://blog.csdn.net/qq_43799161/article/details/123502124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Springboot定时器](https://blog.csdn.net/xyy1028/article/details/80627155)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值