ما هي الـ Spring Cron Job

⏰ ما هي الـ Spring Cron Job؟

هي آلية داخل Spring Framework بتسمح لك تشغل مهام (tasks) بشكل تلقائي ومجدول
مثلاً:

  • كل دقيقة
  • كل يوم الساعة 2 صباحًا
  • كل أسبوع مرة

زي فكرة الـ Linux Cron Jobs بالضبط، لكن داخل تطبيق Java نفسه.


⚙️ كيف تفعّلها في Spring Boot

1. فعّل الـ Scheduling

أضف الأنوتيشن دي في الكلاس الأساسي بتاعك:

@SpringBootApplication
@EnableScheduling
public class MyApp
{
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}


2. أنشئ ميثود فيها الكود اللي عايز يتنفذ

@Component
public class CronTasks
{

@Scheduled(cron = "0 0/5 * * * *") // كل 5 دقايق
public void runTask()
{
System.out.println("Task running at " + LocalDateTime.now());
}
}


⏳ شرح صيغة الـ cron

الـ cron expression بيتكون من 6 أو 7 أجزاء:

second minute hour day-of-month month day-of-week [year]

📘 أمثلة شائعة:

المهمةالتعبيرالمعنى
كل دقيقة0 * * * * *كل دقيقة بالضبط
كل 5 دقايق0 0/5 * * * *كل 5 دقائق
كل ساعة0 0 * * * *أول كل ساعة
كل يوم 2 صباحًا0 0 2 * * *كل يوم الساعة 2:00
كل يوم اثنين 9 صباحًا0 0 9 * * MONيوم الاثنين الساعة 9
كل أول يوم في الشهر0 0 0 1 * *أول يوم في الشهر في منتصف الليل

💡 ممكن تستخدم تعبير أبسط لو مش عايز cron

زي:

@Scheduled(fixedRate = 10000) // كل 10 ثواني
@Scheduled(fixedDelay = 10000) // بعد ما المهمة تخلص بـ 10 ثواني

  • fixedRate: يبدأ المهمة كل فترة محددة بغض النظر إن السابقة خلصت أو لا.
  • fixedDelay: ينتظر حتى تنتهي السابقة ثم يبدأ الجديدة بعد التأخير المحدد.

🧩 مميزات Spring Cron Job

  1. 🔁 تشغيل تلقائي داخل التطبيق
    • مش محتاج تكتب سكريبتات خارجية ولا تعتمد على Linux crontab.
  2. ⚙️ تكامل كامل مع Spring
    • تقدر تستخدم Beans, Services, وRepositories داخل المهام.
  3. 🧠 جدولة مرنة جدًا
    • باستخدام cron expressions أو fixed rates.
  4. 💥 Thread Management تلقائي
    • Spring بيشغل المهام في خلفية التطبيق بشكل منظم.
  5. 🧾 سهلة المراقبة والتحكم
    • تقدر تسجل وقت التشغيل والـ logs بسهولة.
  6. 📈 إمكانية تشغيل أكثر من Job
    • بس تضيف أكثر من ميثود عليها @Scheduled.

📘 مثال متكامل

@Service
public class ReportScheduler
{

// كل يوم الساعة 3 صباحًا
@Scheduled(cron = "0 0 3 * * *")
public void generateDailyReport()
{
System.out.println("Generating daily report at " + LocalDateTime.now());
// Logic: generate report, send email, etc.
}
}


🚀 نصيحة احترافية

لو عندك أكثر من مهمة مجدولة، استخدم:

@EnableAsync
@EnableScheduling

ثم:

@Async
@Scheduled(cron = "0 0 2 * * *")
public void jobOne()
{ … }

@Async
@Scheduled(cron = "0 0 3 * * *")
public void jobTwo()
{ … }

عشان المهام تشتغل بالتوازي بدون ما توقف بعضها.

Read more

لماذا يجب على كل Backend Engineer فهم 12-Factor App؟

في عالم البرمجة، أغلب المطورين يقضون وقتًا كبيرًا في كتابة الكود، لكن المشاكل الحقيقية غالبًا لا تظهر أثناء التطوير… بل تظهر بعد النشر في بيئة الإنتاج (Production). مشاكل مثل: * التطبيق شغال عندك ومش شغال على السيرفر * إعدادات مختلفة بين dev و prod * صعوبة في التوسّع (scaling)

By mahmoud hassan

ليه الناس بتستخدم الجافا

☕ أولًا: ما الذي يميّز جافا عن لغات البرمجة الأخرى؟ 🧱 1. الاستقرار والاعتمادية (Stability) * جافا معمولة للمؤسسات الكبيرة (Enterprise Systems) — زي البنوك، شركات الاتصالات، والحكومات. * الشركات دي بتحب استقرار الكود أكتر من أي شيء تاني. * أنظمة بتشتغل 10 و15 سنة على نفس الكود بدون مشاكل. 🎯 عشان كده معظم: * أنظمة

By mahmoud hassan

ايه هو ال spring batch واهم مميزاته

Spring Batch من الأدوات اللي بتبان “متخصصة” لكنها مهمة جدًا في عالم المؤسسات والبنوك والأنظمة الكبيرة اللي بتتعامل مع كميات ضخمة من البيانات. خلينا نبدأ من الأساس ونمشي خطوة بخطوة 👇 ⚙️ ما هو Spring Batch؟ Spring Batch هو إطار عمل (Framework) من Spring مصمم لمعالجة البيانات الدفعيّة (Batch Processing)

By mahmoud hassan