Spring Scheduler ile Zamanlandırılmış Görev Uygulaması

Java uygulamamızı belirli bir zamanda, zamanlandırılmış görev olarak çalıştırma işlemlerinin Spring ile nasıl olduğuna bakacağız. Bir uygulama yapacağız bu uygulama her 10 saniyede bir konsola bir mesaj yazdıracağız.

Maven projesi oluşturalım. Bağımlılığımızı ekleyelim.

Klasör yapısı yukarıdaki şekildeki gibi olucaktır.

Zamanlandırılmış işlemi yaptıracağımız class’ımızı oluşturacağız. Gorev adında bir class oluşturalım ve yaptığımız adımları açıklayalım.

Gorev class’ımızı @Component anotasyonunu kullanıyoruz. Bir sayac oluşturduk bu sayacımızı sıfırdan başlatarak calistirGorev() metodunda değerini her çalıştırdığımızda bir arttıracağız. Ve bu değer metod her çalıştığında artmış olucak.

Metodumuzun görevi açıkca belli. Konsol ekranına programın çalıştığı zamanı ve o zamandaki sayaç değerini yazdırıyor. Şimdi metodumuzun istediğimiz zamanda çalışmasını sağlamak için gerek anotasyonu yazıyoruz.

Zamanlı olarak çalıştırmak istediğimiz metodun üzerine @Scheduled anotasyonu kullanarak bir cron işleminin zamanını belirtiyoruz. Yukarıda yazdığımız zaman işlemi  bu metodun her 10 saniyede bir her gün çalışmasını sağlamaktadır.

Zamanlanmış görevin yazma şekli ise

olmaktadır.

Örnek vermek gerekirse;

şeklinde olmaktadır.

Spring Scheduled ve Cron işleminin nasıl yapıldığını açıklamaya çalıştım. Şimdi ise springContext.xml adında bir konfigürasyon dosyası oluşturacağız.

Spring konfigürasyon dosyamızda <task:scheduler /> propertysinden bahsedelim. Bu property sayesinde oluşturduğumuz zamanlanmış metodun kaç thread’de çalışacağını söylemiş oluyoruz. Belirtmezsek tek thread’de çalışmaktadır. (Bu işlem asenkron ile karıştırılmamalıdır.)

Diğer bir property ise <context:component-scan/> propertysidir. Bu property ise sıkça kullandığımız Spring Anotasyonların tanınacağı paketi gösteriyoruz. Spring konfigürasyonumuz bitti. Şimdi sıra geldi programımızın çalışmasını sağlacak Main.classımızda  bu class bizim programımızı çalıştırmayı ve devamlı olarak açık kalmasını sağlaycak.

Main classımızda bir spring projesini ayağa kaldırmak için gerekli olan ApplicationContext’ten bir instance yaratıp kendi konfigürasyon dosyamızı tanıtıp ona göre çalışmasını sağlamaktayız.

Projemizi şimdi çalıştıralım ve çıktısına bakalım.  Sonuç olarak her 10 saniyede bir konsola bir çıktı üretiyor.

Çıktı :


Projenin Kaynak Kodlarını Github Üzerinden Görünlüte 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir