Spring Boot与Kotlin定时任务的示例(Scheduling Tasks)

 更新时间:2018年03月09日 13:52:19   投稿:zx  
这篇文章主要介绍了Spring Boot与Kotlin定时任务的示例(Scheduling Tasks),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在编写Spring Boot应用中会遇到这样的场景,比如:需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。

创建定时任务

在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。

在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.scheduling.annotation.EnableScheduling
/**
* Created by http://quanke.name on 2018/1/12.
*/
@SpringBootApplication
@EnableScheduling
class Application
fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}

创建定时任务实现类

import org.apache.commons.logging.LogFactory
import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Component
import java.text.SimpleDateFormat
import java.util.*
/**
* Created by http://quanke.name on 2018/1/12.
*/
@Component
class ScheduledTasks {
val log = LogFactory.getLog(ScheduledTasks::class.java)!!
private val dateFormat = SimpleDateFormat(“HH:mm:ss”)
@Scheduled(fixedRate = 1000)
fun reportCurrentTime() {
log.info(“现在时间 , ${dateFormat.format(Date())}”)
}
}

运行程序,控制台中可以看到类似如下输出,定时任务开始正常运作了。

2018-01-21 23:09:01.112 INFO 23832 — [ main] n.q.kotlin.chaper11_8_1.ApplicationKt : Started ApplicationKt in 8.024 seconds (JVM running for 8.724)
2018-01-21 23:09:02.112 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 现在时间 , 23:09:02
2018-01-21 23:09:03.042 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 现在时间 , 23:09:03
2018-01-21 23:09:04.042 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 现在时间 , 23:09:04
2018-01-21 23:09:05.042 INFO 23832 — [pool-2-thread-1] n.q.k.chaper11_8_1.task.ScheduledTasks : 现在时间 , 23:09:05

@Scheduled详解

在上面的入门例子中,使用了@Scheduled(fixedRate = 1000) 注解来定义每过1秒执行的任务,对于@Scheduled的使用可以总结如下几种方式:

  1. @Scheduled(fixedRate = 1000) :上一次开始执行时间点之后1秒再执行
  2. @Scheduled(fixedDelay = 1000) :上一次执行完毕时间点之后1秒再执行
  3. @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
  4. @Scheduled(cron=”/1 “) :通过cron表达式定义规则

@Scheduled 注解是单线程的,如果需要多线程,请增加@Async

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 搭建maven私有仓库的方法实现

    搭建maven私有仓库的方法实现

    Maven是一个流行的Java项目管理工具,它可以帮助我们管理项目的构建、报告和文档,本文主要介绍了搭建maven私有仓库的方法实现,感兴趣的可以了解一下
    2023-05-05
  • springboot实现上传并解析Excel过程解析

    springboot实现上传并解析Excel过程解析

    这篇文章主要介绍了springboot实现上传并解析Excel过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • MyBatis-Plus中的逻辑删除使用详解

    MyBatis-Plus中的逻辑删除使用详解

    开发系统时,有时候在实现功能时,删除操作需要实现逻辑删除就是将数据标记为删除,而并非真的物理删除(非DELETE操作),查询时需要携带状态条件,确保被标记的数据不被查询到。这样做的目的就是避免数据被真正的删除
    2022-12-12
  • Intellij IDEA安装lombok插件及使用详解

    Intellij IDEA安装lombok插件及使用详解

    今天小编就为大家分享一篇关于Intellij IDEA安装lombok插件及使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • IDEA2023版本创建Spring项目只能勾选17和21却无法使用Java8的完美解决方案

    IDEA2023版本创建Spring项目只能勾选17和21却无法使用Java8的完美解决方案

    想创建一个springboot的项目,本地安装的是1.8,但是在使用Spring Initializr创建项目时,发现版本只有17和21,这篇文章主要介绍了IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8的解决方法,需要的朋友可以参考下
    2023-12-12
  • Java设计模式七大原则之合成复用原则详解

    Java设计模式七大原则之合成复用原则详解

    合成复用原则(Composite Reuse Principle),即尽量使用组合/聚合的方式,而不是使用继承。本文将为大家具体介绍一下Java设计模式七大原则之一的合成复用原则,需要的可以参考一下
    2022-02-02
  • Springboot打包代码,反编译后代码混淆方式(防止还原代码)

    Springboot打包代码,反编译后代码混淆方式(防止还原代码)

    文章主要介绍了如何对Spring Boot项目进行jar包混淆,以防止反编译还原原始代码,通过在项目中添加proguard.cfg文件并配置Maven插件,可以实现代码混淆,从而增加反编译的难度
    2024-11-11
  • java实现简单发送邮件功能

    java实现简单发送邮件功能

    这篇文章主要为大家详细介绍了java实现简单发送邮件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • springboot连接neo4j报错的解决方案

    springboot连接neo4j报错的解决方案

    这篇文章主要介绍了springboot连接neo4j报错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • HttpClient 在Java项目中的使用详解

    HttpClient 在Java项目中的使用详解

    HttpClient作为访问Http服务的客户端访问程序已经被广泛使用,提高了开发效率,也提高了代码的健壮性。因此熟练掌握HttpClient是必需的,关于httpclient感兴趣的朋友可以参考本篇文章
    2015-10-10

最新评论