spring
कार्य निष्पादन और निर्धारण
खोज…
शेड्यूलिंग सक्षम करें
वसंत एक उपयोगी कार्य समयबद्धन सहायता प्रदान करता है। इसे सक्षम करने के लिए, बस अपने किसी @Configuration
क्लासेस को @EnableScheduling
से @EnableScheduling
:
@Configuration
@EnableScheduling
public class MyConfig {
// Here it goes your configuration
}
निश्चित देरी
यदि हम चाहते हैं कि निष्पादन समाप्त होने से पहले कुछ कोड समय-समय पर निष्पादित किए जाएं, तो हमें निश्चित विलंब (मिलीसेकंड में मापा जाता है) का उपयोग करना चाहिए:
@Component
public class MyScheduler{
@Scheduled(fixedDelay=5000)
public void doSomething() {
// this will execute periodically, after the one before finishes
}
}
निर्धारित दर
यदि हम चाहते हैं कि कुछ समय-समय पर निष्पादित हो, तो यह कोड हमारे द्वारा निर्दिष्ट मिलीसेकंड में मूल्य के अनुसार एक बार चालू हो जाएगा:
@Component
public class MyScheduler{
@Scheduled(fixedRate=5000)
public void doSomething() {
// this will execute periodically
}
}
क्रोन अभिव्यक्ति
क्रोन की अभिव्यक्ति में छह अनुक्रमिक क्षेत्र होते हैं -
second, minute, hour, day of month, month, day(s) of week
और निम्नानुसार घोषित किया जाता है
@Scheduled(cron = "* * * * * *")
हम समय-सारणी को भी इस प्रकार निर्धारित कर सकते हैं -
@Scheduled(cron="* * * * * *", zone="Europe/Istanbul")
टिप्पणियाँ: -
syntax means example explanation
------------------------------------------------------------------------------------
* match any "* * * * * *" do always
*/x every x "*/5 * * * * *" do every five seconds
? no specification "0 0 0 25 12 ?" do every Christmas Day
उदाहरण: -
syntax means
------------------------------------------------------------------------------------
"0 0 * * * *" the top of every hour of every day.
"*/10 * * * * *" every ten seconds.
"0 0 8-10 * * *" 8, 9 and 10 o'clock of every day.
"0 0/30 8-10 * * *" 8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.
"0 0 9-17 * * MON-FRI" on the hour nine-to-five weekdays
"0 0 0 25 12 ?" every Christmas Day at midnight
@Scheduled()
साथ घोषित एक विधि को प्रत्येक मिलान मामले के लिए स्पष्ट रूप से कहा जाता है।
यदि हम चाहते हैं कि क्रोन की अभिव्यक्ति के पूरा होने पर कुछ कोड निष्पादित किए जाएं, तो हमें इसे एनोटेशन में निर्दिष्ट करना होगा:
@Component
public class MyScheduler{
@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
// this will execute on weekdays
}
}
यदि हम अपने कंसोल में वर्तमान समय को 5 सेकंड के बाद प्रिंट करना चाहते हैं -
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class Scheduler {
private static final Logger log = LoggerFactory.getLogger(Scheduler.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(cron = "*/5 * * * * *")
public void currentTime() {
log.info("Current Time = {}", dateFormat.format(new Date()));
}
}
XML कॉन्फ़िगरेशन का उपयोग करके उदाहरण:
उदाहरण वर्ग:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component("schedulerBean")
public class Scheduler {
private static final Logger log = LoggerFactory.getLogger(Scheduler.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
public void currentTime() {
log.info("Current Time = {}", dateFormat.format(new Date()));
}
}
उदाहरण XML (कार्य-संदर्भ। Xml):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd">
<task:scheduled-tasks scheduler="scheduledTasks">
<task:scheduled ref="schedulerBean" method="currentTime" cron="*/5 * * * * MON-FRI" />
</task:scheduled-tasks>
<task:scheduler id="scheduledTasks" />
</beans>