Spring Boot Planlanmış Görevler

20 Şubat 20253 dk okuma

Spring Boot Planlanmış Görevler

Spring Boot, @Scheduled anotasyonu ile arka planda çalışan görevleri kolayca planlamanızı sağlar. Bu yöntem, periyodik görevleri, otomasyon süreçlerini ve toplu işlemleri manuel müdahaleye gerek kalmadan yürütmek için idealdir.


🌟 Neden Spring Boot @Scheduled Kullanmalıyız?

  • Görevleri Otomatikleştirin: İşlemleri belirli aralıklarla çalıştırın.
  • Kaynakları Verimli Kullanın: Ana iş parçacıklarını bloklamadan görevleri planlayın.
  • Farklı Zamanlama Seçenekleri: Sabit oranlı, sabit gecikmeli veya cron tabanlı zamanlamalar.
  • Spring Boot Entegrasyonu: Uygulama yaşam döngüsüyle sorunsuz çalışır.

🌟 Gereksinimler

Şunlara sahip olduğunuzdan emin olun:

  • Java Development Kit (JDK) 17+
  • 📦 Maven veya Gradle kurulu
  • 🔤 Bir Java IDE (IntelliJ IDEA, Eclipse vb.)

🛠️ Adım 1: Bağımlılıkları Ekleyin

Cron desteğini etkinleştirmek için spring-boot-starter-web bağımlılığını pom.xml veya build.gradle dosyanıza ekleyin.

Maven:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-web'

Neden spring-boot-starter-web? > @Scheduled anotasyonu çalışırken Spring Context gerektirir. spring-boot-starter-web eklenerek uygulama yaşam döngüsünün doğru şekilde yönetilmesi sağlanır.


📋 Adım 2: Cron Etkinleştirme

Cron desteğini etkinleştirmek için ana uygulama sınıfınıza @EnableScheduling anotasyonunu ekleyin.

package com.example.scheduled; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class ScheduledApplication { public static void main(String[] args) { SpringApplication.run(ScheduledApplication.class, args); } }
package com.example.scheduled import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.scheduling.annotation.EnableScheduling @SpringBootApplication @EnableScheduling class ScheduledApplication fun main(args: Array<String>) { runApplication<ScheduledApplication>(*args) }

📖 Adım 3: Planlanmış Bir Görev Tanımlayın

@Scheduled kullanarak zamanlanmış bir görev oluşturun.

package com.example.scheduled; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.time.LocalTime; @Service public class ScheduledTask { @Scheduled(fixedRate = 5000) public void runTask() { System.out.println("Planlanmış görev çalıştırıldı: " + LocalTime.now()); } }
package com.example.scheduled import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Service import java.time.LocalTime @Service class ScheduledTask { @Scheduled(fixedRate = 5000) fun runTask() { println("Planlanmış görev çalıştırıldı: ${LocalTime.now()}") } }

▶️ Uygulamayı Çalıştırma

Spring Boot uygulamasını çalıştırın:

./mvnw spring-boot:run

Veya Gradle kullanarak:

gradle bootRun

Planlanmış görev her 5 saniyede bir çalıştırılacaktır.


🧪 Planlanmış Görevi Test Etme

Beklenen Konsol Çıktısı:

Planlanmış görev çalıştırıldı: 12:00:01 Planlanmış görev çalıştırıldı: 12:00:06 Planlanmış görev çalıştırıldı: 12:00:11

Spring Boot’un @Scheduled anotasyonu, arka plan görevlerini belirli aralıklarla çalıştırmayı kolaylaştırır. Sabit aralıkta çalışan görevler, cron tabanlı zamanlama ve gecikmeli yürütme gibi birçok esnek seçenekle, Spring Boot scheduling mekanizması güçlü ve kullanışlı bir çözümdür.