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

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

相关文章

  • javaMybatis映射属性,高级映射详解

    javaMybatis映射属性,高级映射详解

    下面小编就为大家带来一篇javaMybatis映射属性,高级映射详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Java多线程中关于join方法的使用实例解析

    Java多线程中关于join方法的使用实例解析

    本文通过实例代码给大家实例介绍了Java多线程中关于join方法的使用,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • 基于OAuth2.0授权系统的验证码功能的实现

    基于OAuth2.0授权系统的验证码功能的实现

    本篇教程给大家分享基于OAuth2.0授权系统的验证码功能的实现,验证码功能的实现是采用Zuul网关的Filter过滤器进行校验验证码,具体实现代码跟随小编一起看看吧
    2021-05-05
  • 使用import导入静态成员的方法

    使用import导入静态成员的方法

    这篇文章主要介绍了浅谈使用import导入静态成员,需要的朋友可以参考下。
    2017-09-09
  • Spring框架生成图片验证码实例

    Spring框架生成图片验证码实例

    验证码在很多地方都会遇到,实现的方法和形式也有很多,主要的目的就是为了安全,防止一些恶意的攻击等。今天在之前搭建好的一个spring框架上写了一个验证码的生成demo,我会贴出细节代码,但是spring的配置就不在介绍了,有需要的可以参考借鉴。
    2016-08-08
  • IntelliJ IDEA 2023.2最新版激活方法及验证ja-netfilter配置是否成功

    IntelliJ IDEA 2023.2最新版激活方法及验证ja-netfilter配置是否成功

    随着2023.2版本的发布,用户们渴望了解如何激活这个最新版的IDE,本文将介绍三种可行的激活方案,包括许可证服务器、许可证代码和idea vmoptions配置,帮助读者成功激活并充分利用IDEA的功能,感兴趣的朋友参考下吧
    2023-08-08
  • Spring Data JPA实现动态条件与范围查询实例代码

    Spring Data JPA实现动态条件与范围查询实例代码

    本篇文章主要介绍了Spring Data JPA实现动态条件与范围查询实例代码,非常具有实用价值,需要的朋友可以参考下
    2017-06-06
  • c#和java base64不一致的解决方法

    c#和java base64不一致的解决方法

    最近非常郁闷的处理这个base64的问题,同样的一个图片文件,在java和c#进行base64编码后结果不一样,苦恼了很久,下面这篇文章主要给大家介绍了关于c#和java base64不一致的解决方法,需要的朋友可以参考下
    2018-11-11
  • 图解Java经典算法冒泡排序的原理与实现

    图解Java经典算法冒泡排序的原理与实现

    冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完成了排序
    2022-09-09
  • Mybatis-plus出现数据库id很大或者为负数的解决

    Mybatis-plus出现数据库id很大或者为负数的解决

    本文主要介绍了Mybatis-plus出现数据库id很大或者为负数的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论