Schedulare task in Spring Boot e Kotlin

Mattepuffo's logo
Schedulare task in Spring Boot e Kotlin

Schedulare task in Spring Boot e Kotlin

Spring Boot ha già tutto per creare task schedulati.

E possiamo usare sia una sintassi simile a CRON che non.

In questo articolo vediamo come fare in un progetto Kotlin.

Questo il mio application.properties:

spring.application.name=test_spring_kotlin
logging.level.root=INFO
logging.level.com.example.scheduledjobs=INFO
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

Poi questa la classe dove eseguo due task:

  • uno ogni minuto
  • uno giornaliero ad un orario prestabilito
package com.spring.kotlin

import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Component
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

@Component
class MyTasks {
  private val formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss")

  @Scheduled(cron = "0 * * * * *")
  fun jobOgniMinuto() {
    val orarioCorrente = LocalDateTime.now().format(formatter)
    println("[Job ogni minuto] Eseguito alle: $orarioCorrente")
  }

  @Scheduled(cron = "0 28 08 * * *")
  fun jobGiornaliero() {
    val orarioCorrente = LocalDateTime.now().format(formatter)
    println("[Job giornaliero] Eseguito alle: $orarioCorrente")
  }
}

Infine abilitiamo le schedulazioni:

package com.spring.kotlin

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.scheduling.annotation.EnableScheduling

@SpringBootApplication
@EnableScheduling
class TestSpringKotlinApplication

fun main(args: Array<String>) {
	runApplication<TestSpringKotlinApplication>(*args)
}

Enjoy!


Condividi

Commentami!