Springboot通过Scheduled实现定时任务代码

网友投稿 277 2023-03-11


Springboot通过Scheduled实现定时任务代码

定时任务一般会存在中大型企业级项目中,为了减少服务器、数据库的压力往往会采用时间段性的去完成某些业务逻辑。比较常见的就是金融服务系统推送回调,一般支付系统订单在没有收到成功的回调返回内容时会持续性的回调,这种回调一般都是定时任务来完成的。还有就是报表的生成,我们一般会在客户访问量过小的时候来完成这个操作,那往往都是在凌晨。这时我们也可以采用定时任务来完成逻辑。SpringBoot为我们内置了定时任务,我们只需要一个注解就可以开启定时为我们所用了。

在开发中,定时任务是常见的功能,在spring boot 下开发定时任务其实很简单,具体代码如下:

1、配置依赖包pom.xml

由于默认的maven仓库经常访问不了,这里采用了阿里云的maven仓库镜像。

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.example

demo

0.0.1-SNAPSHOT

jar

spring-boot-scheduled

Demo project for Spring Boot

public

aliyun nexus

http://maven.aliyun.com/nexus/content/groups/public/

true

public

aliyun nexus

http://maven.aliyun.com/nexus/content/groups/public/

true

false

&ltiHwKQZmIR;/pluginRepository>

org.springframework.boot

spring-boot-starter-parent

1.4.5.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.example

demo

0.0.1-SNAPSHOT

jar

spring-boot-scheduled

Demo project for Spring Boot

public

aliyun nexus

http://maven.aliyun.com/nexus/content/groups/public/

true

public

aliyun nexus

http://maven.aliyun.com/nexus/content/groups/public/

true

false

&ltiHwKQZmIR;/pluginRepository>

org.springframework.boot

spring-boot-starter-parent

1.4.5.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

2、定制任务场景

定时任务实现,提供固定周期、固定周期延迟间隔和制定时间点执行等场景。采用@Scheduled注解进行标注。

ExampleTimer.java

package com.example;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

@Component

public class ExampleTimer {

SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

@Scheduled(fixedRate = 10000)

public void timerRate() {

System.out.println(dateFormat.format(new Date()));

}

//第一次延迟1秒执行,当执行完后2秒再执行

@Scheduled(initialDelay = 1000, fixedDelay = 2000)

public void timerInit() {

System.out.println("iniHwKQZmIRit : "+dateFormat.format(new Date()));

}

//每天20点16分50秒时执行

@Scheduled(cron = "50 16 20 * * ?")

public void timerCron() {

System.out.println("current time : "+ dateFormat.format(new Date()));

}

}

3、启动应用程序

启动程序,需要增加@EnableScheduling注解.

SpringBootScheduledApplication.java

package com.example;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication

@EnableScheduling

public class SpringBootScheduhttp://ledApplication {

public static void main(String[] args) {

SpringApplication.run(SpringBootScheduledApplication.class, args);

}

}

4、输出结果

20:16:27

init : 20:16:28

init : 20:16:30

init : 20:16:32

init : 20:16:34

init : 20:16:36

20:16:37

init : 20:16:38

init : 20:16:40

init : 20:16:42

init : 20:16:44

init : 20:16:46

20:16:47

init : 20:16:48

current time : 20:16:50

init : 20:16:50

init : 20:16:52

init : 20:16:54

总结

以上就是本文关于Springboot通过Scheduled实现定时任务代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

Spring boot跨域设置实例详解

快速了解Spring Boot

浅谈Springboot之于Spring的优势

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:跳过路由器管理员密码(如何跳过路由器管理员密码)
下一篇:软件接口设计方案(软件接口设计图)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~