प्रौद्योगिकी साझेदारी

springboot इत्यस्मिन् निर्धारितकार्यं लेखनम्

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

भाग 1: परिचयः

१.१ निर्धारितकार्यस्य महत्त्वम्

आधुनिकसॉफ्टवेयरविकासे अनुसूचितकार्यं अनुप्रयोगस्वचालनस्य परिचालनदक्षतायाः च प्रमुखः घटकः भवति । भवेत् तत् आँकडा-बैकअप, प्रणाली-स्वास्थ्य-परीक्षा, नियमित-रिपोर्ट-जननम्, अथवा उपयोक्तृ-क्रियाकलापैः प्रेरिताः स्वचालित-प्रक्रियाः, निर्धारित-कार्यं अनिवार्य-भूमिकां निर्वहति ते व्यावसायिकतर्कस्य निरन्तरताम्, प्रणाल्याः स्वनिर्वाहक्षमतां च सुनिश्चितयन्ति ।

१.२ विभिन्नक्षेत्रेषु निर्धारितकार्यस्य अनुप्रयोगः
  • उद्यम संसाधन योजना (ERP) प्रणाली: अनुसूचितकार्यस्य उपयोगेन वित्तीयप्रतिवेदनानि, इन्वेण्ट्री अपडेट् इत्यादीनि जनयितुं शक्यन्ते।
  • सामग्री प्रबन्धन प्रणाली (CMS) 1.1.: नियमितरूपेण सामग्रीं प्रकाशयन्तु, कैशं स्वच्छं कुर्वन्तु इत्यादि।
  • ग्राहक सम्बन्ध प्रबन्धन (CRM) प्रणाली: नियमितरूपेण विपणन-ईमेल-पत्राणि, ग्राहक-अनुवर्तन-स्मारकानि इत्यादीनि प्रेषयन्तु।
  • ऑनलाइन विज्ञापन मञ्च: नियमितरूपेण विज्ञापनरणनीतयः समायोजयन्तु, विज्ञापनप्रदर्शनस्य अनुकूलनं कुर्वन्तु इत्यादि।
१.३ पारम्परिकनिर्धारितकार्यस्य कार्यान्वयनस्य आव्हानानि

पारम्परिकविकासप्रतिरूपे, अनुसूचितकार्यं कार्यान्वितुं प्रायः प्रचालनतन्त्रस्य निर्धारितकार्यस्य (यथा Linux इत्यस्य crontab) उपरि अवलम्बनं वा जटिलव्यापारतर्कस्य लेखनस्य आवश्यकता भवति एतेषां पद्धतीनां बहवः असुविधाः सन्ति- १.

  • जटिल विन्यास: प्रचालनतन्त्रस्य कार्यनिर्धारणस्य गहनबोधः आवश्यकः ।
  • कठिनं परिपालयितुं: कार्याणि भिन्न-भिन्न-प्रणालीषु अनुप्रयोगेषु च विकीर्णानि सन्ति, येन तेषां प्रबन्धनं, निरीक्षणं च एकरूपेण कर्तुं कठिनं भवति ।
  • दुर्बलमापनीयता: यथा यथा भवतः व्यवसायः वर्धते तथा तथा कार्याणि योजयितुं परिवर्तनं वा जटिलं भवति, समयग्राही च भवति।
१.४ Spring Boot समाधानम्

लोकप्रियजावा-रूपरेखारूपेण Spring Boot निर्धारितकार्यं कार्यान्वितुं अधिकं सुरुचिपूर्णं एकीकृतं च मार्गं प्रदाति । एतत् विन्यासं सरलीकरोति तथा च समृद्धानि एपिआइ प्रदाति, येन विकासकाः अनुसूचितकार्यकार्यं शीघ्रं अनुप्रयोगेषु एकीकृत्य स्थापयितुं शक्नुवन्ति ।

१.५ निर्धारितकार्यस्य कृते Spring Boot इत्यस्य समर्थनम्

वसन्त बूट् उत्तीर्णः अभवत्@EnableSchedulingतथा@Scheduled एनोटेशन्स् इत्यनेन Spring अनुप्रयोगेषु निर्धारितकार्यं लिखितुं विन्यस्तुं च अत्यन्तं सुलभं भवति । तदतिरिक्तं, Spring Boot Spring Task Scheduler इत्यनेन सह एकीकरणं अपि प्रदाति, यत् अधिक उन्नत-निर्धारित-कार्य-आवश्यकतानां समर्थनं प्रदाति ।

1.6 निर्धारितकार्यं कार्यान्वितुं Spring Boot किमर्थं चिनोतु
  • विन्यासः सरलीकरोतु: अनुसूचितकार्यं एनोटेशनद्वारा अल्पमात्रायां विन्यासस्य माध्यमेन च कार्यान्वितुं शक्यते ।
  • एकीकृत्य सुलभम्: Spring इकोसिस्टम् इत्यनेन सह निर्विघ्नतया एकीकृतः, अन्येषां Spring विशेषतानां यथा लेनदेनप्रबन्धनम्, निर्भरता-इञ्जेक्शन् इत्यादीनां लाभं ग्रहीतुं शक्नोति ।
  • सशक्त सामुदायिक समर्थन: Spring Boot इत्यत्र एकः विशालः विकासकसमुदायः अस्ति यः बहु संसाधनं उत्तमप्रथाः च प्रदाति ।
  • परीक्षणं कर्तुं सुलभम्: Spring Boot इत्यस्य निर्धारितकार्यं यूनिट् परीक्षणं एकीकरणपरीक्षणं च कर्तुं सुलभं करोति ।

भाग 2: वसन्तबूटस्य परिचयः

२.१ वसन्तस्य बूट् अवलोकनम्

Spring Boot इति Pivotal दलेन (अधुना VMware इत्यस्य भागः) विकसितः अस्ति तथा च Spring framework इत्यस्य आधारेण मॉड्यूलर, द्रुतविकासः, परिनियोजनरूपरेखा च अस्ति । अस्य उद्देश्यं Spring अनुप्रयोगानाम् आरम्भिकं सेटअपं विकासं च सरलीकर्तुं पूर्वनिर्धारितविन्यासानां श्रृङ्खलां प्रदातुं विकासकानां विन्यासकार्यं न्यूनीकर्तुं च अस्ति

२.२ Spring Boot इत्यस्य मूलविशेषताः
  • स्वचालितविन्यासः: Spring Boot स्वयमेव परियोजनायां निर्भरतायाः आधारेण Spring अनुप्रयोगं विन्यस्तुं शक्नोति ।
  • स्वतन्त्रतया संचालनं कुर्वन्तु: Spring Boot अनुप्रयोगेषु अन्तःनिर्मित HTTP सर्वराः (यथा Tomcat, Jetty, अथवा Undertow) समाविष्टाः सन्ति तथा च बाह्यसर्वर् मध्ये परिनियोजनस्य आवश्यकता नास्ति ।
  • XML विन्यासस्य आवश्यकता नास्ति: Spring Boot इत्यत्र XML विन्याससञ्चिकानां उपयोगस्य आवश्यकता नास्ति, यद्यपि अद्यापि XML विन्यासस्य समर्थनं करोति ।
  • सूक्ष्मसेवासमर्थनम्: Spring Boot सूक्ष्मसेवा आर्किटेक्चरस्य कृते अतीव उपयुक्तम् अस्ति तथा च निर्माणं, परिनियोजनं, विस्तारं च सुलभम् अस्ति ।
२.३ Spring Boot प्रारम्भतन्त्रम्

Spring Boot अनुप्रयोगः माध्यमेन आरभ्यतेSpringApplication.run() विधिः कार्यान्वितः, स्वयमेव Spring अनुप्रयोगसन्दर्भं निर्माय विन्यस्यति । Spring Boot इत्यनेन अनुप्रयोगानाम् निरीक्षणाय प्रबन्धनाय च आदेशपङ्क्ति-अन्तरफलकं (CLI) तथा Actuator-अन्तबिन्दुः अपि प्रदाति ।

२.४ Spring Boot निर्भरताप्रबन्धनम्

वसन्त बूट् उत्तीर्णः अभवत्spring-boot-starter-parent निर्भरताप्रबन्धनं प्रदाति तथा च Maven तथा Gradle परियोजनानां विन्यासं सरलीकरोति । एतत् संस्करणसङ्ख्याः निर्भरतापरिधिः च पूर्वनिर्धारयति, येन निर्भरताविग्रहाः संस्करणनियन्त्रणं च प्रबन्धनं सुलभं भवति ।

२.५ Spring Boot इत्यस्य समुदायः प्लग-इन् पारिस्थितिकी च

Spring Boot इत्यस्मिन् सक्रियः मुक्तस्रोतसमुदायः अस्ति यः बहुसंख्याकाः प्लगिन्स् तथा "Starters" प्रदाति येषु विशिष्टकार्यक्षमतायाः निर्माणार्थं आवश्यकाः निर्भरताः सन्ति, यथाspring-boot-starter-webRESTful अनुप्रयोगानाम् निर्माणार्थम्।

2.6 उदाहरणम् : सरलं Spring Boot अनुप्रयोगं रचयन्तु

अधः सरलं Spring Boot अनुप्रयोगं निर्मातुं सोपानानि सन्ति, तत्सम्बद्धं च नमूनासङ्केतः:

  1. परियोजनासंरचना रचयन्तु: परियोजनासंरचना शीघ्रं जनयितुं Spring Initializr (https://start.spring.io/) इत्यस्य उपयोगं कुर्वन्तु ।
  2. आश्रयाणि योजयन्तु: आवश्यकं Starters चिनोतु, उदाहरणार्थम्spring-boot-starter-web
  3. मुख्यानुप्रयोगवर्गं लिखत
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class MyApp {
        public static void main(String[] args) {
            SpringApplication.run(MyApp.class, args);
        }
    }
    
  4. REST नियन्त्रकं रचयन्तु
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class MyController {
        @GetMapping("/")
        public String home() {
            return "Hello, Spring Boot!";
        }
    }
    
२.७ Spring Boot परिनियोजनविधिः
  • JAR इति संकुलितम्: Spring Boot अनुप्रयोगं माध्यमेन कार्यान्वयनीय JAR सञ्चिकायां संकुलं कर्तुं शक्यतेjava -jarआदेशः चालयति।
  • कंटेनरयुक्त परिनियोजन: Spring Boot अनुप्रयोगाः Docker इत्यादीनां पात्रीकरणप्रौद्योगिकीनां कृते सुयोग्याः सन्ति तथा च मेघवातावरणेषु परिनियोजनं सुलभम् अस्ति ।
2.8 Spring Boot तथा ​​Spring Framework इत्येतयोः सम्बन्धः

Spring Boot Spring Framework इत्यस्य प्रतिस्थापनं न भवति, अपितु Spring Framework इत्यस्य आधारेण द्रुतविकासविधिः अस्ति । इदं Spring Framework इत्यस्य सर्वाणि विशेषतानि लचीलतां च निर्वाहयन् Spring अनुप्रयोगानाम् आरम्भस्य द्रुतमार्गं प्रदाति ।

2.9 Spring Boot इति किमर्थं चिन्वन्तु ?
  • तीव्र विकास: Spring Boot इत्यस्य स्वचालितविन्यासः सरलीकृतविन्यासः च विकासं शीघ्रं करोति ।
  • परिनियोजनं सुलभम्: एम्बेडेड् HTTP सर्वरः तथा कंटेनराइजेशनसमर्थनं परिनियोजनं सरलं करोति ।
  • सामुदायिक समर्थन: Spring Boot समुदायः संसाधनानाम्, प्लग-इन्-इत्यस्य, उत्तम-प्रथानां च धनं प्रदाति ।
२.१० उपसंहारः

स्प्रिंग बूट् आधुनिकजावा विकासाय विनिर्मितः एकः रूपरेखा अस्ति यत् एतत् विन्यासं सरलीकरोति तथा च बहिः-पेटी-कार्यस्य श्रृङ्खलां प्रदाति, येन विकासकाः आधारभूतसंरचनायाः निर्माणस्य अपेक्षया व्यावसायिकतर्कस्य कार्यान्वयनस्य विषये ध्यानं दातुं शक्नुवन्ति निम्नलिखित अध्यायेषु वयं निर्धारितकार्य्येषु Spring Boot इत्यस्य अनुप्रयोगे गहनतया गमिष्यामः तथा च तस्य विशेषतानां उपयोगः कुशलं विश्वसनीयं च स्वचालितकार्यं निर्मातुं कथं करणीयम् इति दर्शयिष्यामः

भागः ३ : निर्धारितकार्यस्य मूलभूतसंकल्पना

३.१ निर्धारितकार्यस्य परिभाषा

निर्धारितकार्यं पूर्वनिर्धारितसमये स्वयमेव निष्पादितः कोडस्य अथवा कार्यक्रमस्य एकः भागः भवति । ते एकवारं वा आवधिकं वा भवितुम् अर्हन्ति तथा च तेषां उपयोगः स्वचालितकार्यं कर्तुं यथा दत्तांशस्य बैकअपं, सूचनां प्रेषयितुं, निर्धारितपरीक्षां कर्तुं इत्यादिषु भवति ।

३.२ निर्धारितकार्यस्य प्रकाराः
  • एकवारं कार्याणि: केवलं एकवारं निष्पादितं, प्रायः विशिष्टप्रारम्भीकरणस्य अथवा सफाईक्रियाणां कृते ।
  • आवधिक कार्यम्: निश्चितसमयान्तरे पुनः पुनः निष्पादितं, यत् नियतान्तरं वा पञ्चाङ्गाधारितं समयं वा भवितुम् अर्हति ।
३.३ निर्धारितकार्यस्य अनुप्रयोगपरिदृश्याः
  • data backup इति: दत्तांशसुरक्षां सुनिश्चित्य नियमितरूपेण दत्तांशकोशस्य बैकअपं गृह्यताम्।
  • रिपोर्ट् जननम्: निर्णयनिर्माणे सहायतार्थं नियमितरूपेण व्यावसायिकप्रतिवेदनानि जनयन्तु।
  • प्रणालीनिरीक्षणम्: समये समये समस्यानां आविष्कारं समाधानं च कर्तुं प्रणालीस्थितेः जाँचं कुर्वन्तु।
  • उपयोक्तृसूचना: उपयोक्तृव्यवहारस्य अथवा विशिष्टघटनानां आधारेण स्मरणं वा सूचनां वा प्रेषयन्तु।
३.४ निर्धारितकार्यस्य महत्त्वम्

भवतः प्रणालीं चालयितुं व्यावसायिकप्रक्रियाणां स्वचालितीकरणाय च अनुसूचितकार्यं महत्त्वपूर्णम् अस्ति । ते हस्तहस्तक्षेपं न्यूनीकर्तुं, कार्यक्षमतां वर्धयितुं, कार्याणां समयसापेक्षतां सटीकतां च सुनिश्चितं कर्तुं शक्नुवन्ति ।

३.५ निर्धारितकार्यस्य कार्यान्वयनस्य आव्हानानि
  • कालस्य सटीकता: निर्धारितसमये कार्याणि समीचीनतया निष्पादितानि इति सुनिश्चितं कुर्वन्तु।
  • त्रुटिनियन्त्रणम्: निष्पादनस्य समये भवितुम् अर्हन्ति दोषाः सम्यक् सम्पादयन्तु।
  • संसाधन प्रबन्धन: कार्यनिष्पादनस्य समये प्रणालीप्रदर्शने प्रभावं परिहरितुं संसाधनानाम् आवंटनं यथोचितरूपेण कुर्वन्तु।
३.६ निर्धारितकार्यं कथं कार्यान्वितुं शक्यते
  • ऑपरेटिंग सिस्टम स्तर: crontab अथवा Windows Task Scheduler इत्यस्य उपयोगं कुर्वन्तु ।
  • प्रोग्रामिंग भाषा स्तर: भाषाविशिष्टं पुस्तकालयं वा ढाञ्चं वा उपयुज्यताम्, यथा जावाjava.util.Timer
  • अनुप्रयोगरूपरेखा स्तर: ढांचाद्वारा प्रदत्तस्य निर्धारितकार्यसमर्थनस्य उपयोगं कुर्वन्तु, यथा Spring@Scheduled
३.७ उदाहरणम् : जावा इत्यस्य उपयोगःjava.util.Timerनिर्धारितकार्यं कार्यान्वितं कुर्वन्तु

अत्र Java standard library इत्यस्य उपयोगेन उदाहरणं दृश्यतेTimerवर्गेण कार्यान्वितस्य सरलस्य निर्धारितकार्यस्य उदाहरणम् : १.

import java.util.Timer;
import java.util.TimerTask;

public class SimpleTimerTask {
    public static void main(String[] args) {
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("执行定时任务:"   System.currentTimeMillis());
            }
        };
        Timer timer = new Timer();
        long delay = 0;
        long intervalPeriod = 1000; // 间隔1秒执行一次
        timer.scheduleAtFixedRate(task, delay, intervalPeriod);
    }
}
३.८ उदाहरणम् : cron व्यञ्जनानां प्रयोगः

Cron expressions इति निर्धारितकार्यस्य निष्पादनसमयं विन्यस्तुं शक्तिशाली उपायः अस्ति । प्रतिदिनं प्रातः १ वादने कार्यं निष्पादयितुं cron व्यञ्जनस्य उदाहरणं निम्नलिखितम् अस्ति ।

0 0 1 * * ?
3.9 Spring Boot इत्यस्मिन् अनुसूचितकार्यम्

वसन्त बूट् उत्तीर्णः अभवत्@Scheduled एनोटेशन्स् निर्धारितकार्यस्य विन्यासं कार्यान्वयनञ्च सरलीकरोति ।अत्र प्रयोगः@Scheduledएनोटेटेड् Spring Boot निर्धारितकार्य उदाहरणम्:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {
    
    @Scheduled(fixedRate = 5000) // 每5秒执行一次
    public void reportCurrentTime() {
        System.out.println("当前时间:"   System.currentTimeMillis());
    }
    
    @Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
    public void scheduleTask() {
        System.out.println("执行定时任务:"   System.currentTimeMillis());
    }
}
३.१० निर्धारितकार्यस्य निरीक्षणं प्रबन्धनं च
  • लॉगिंग: समस्यानिरीक्षणं कार्यप्रदर्शननिरीक्षणं च सुलभं कर्तुं कार्याणां निष्पादनं अभिलेखयन्तु।
  • स्वास्थ्यपरीक्षा: नियमितरूपेण निर्धारितकार्यस्य स्वास्थ्यस्य स्थितिं पश्यन्तु यत् ते सामान्यरूपेण प्रचलन्ति इति सुनिश्चितं कुर्वन्तु।

भागः ४: Spring Boot इत्यस्मिन् कार्यस्य कार्यान्वयनस्य समयनिर्धारणम्

४.१ प्रयोगः@Scheduledटिप्पणी

@Scheduled इदं निर्धारितकार्यस्य कार्यान्वयनस्य सरलीकरणाय Spring द्वारा प्रदत्तं टिप्पणी अस्ति । एतत् भवन्तं सरलटिप्पणीविन्यासद्वारा समये समये निष्पादितविधिनिर्माणं कर्तुं शक्नोति ।

4.2 @Scheduledएनोटेशन विन्यास
  • fixedRate: द्वयोः कार्यनिष्पादनयोः मध्ये नियतसमयान्तरं (मिलिसेकेण्ड्-मात्रायां) निर्दिशन्तु ।
  • fixedDelay: अन्तिमकार्यनिष्पादनस्य समाप्तेः अग्रिमकार्यस्य आरम्भस्य च मध्ये नियतसमयान्तरं निर्दिशन्तु ।
  • initialDelay: प्रथमवारं कार्यस्य निष्पादनात् पूर्वं विलम्बसमयं निर्दिशन्तु ।
  • cron: कार्यनिष्पादनार्थं समयसूचीं निर्दिष्टुं cron व्यञ्जनानां उपयोगं कुर्वन्तु ।
४.३ उदाहरणम् : प्रयोगःfixedRate

निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् प्रत्येकं 5 सेकेण्ड् मध्ये निष्पादयति:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class FixedRateTask {

    @Scheduled(fixedRate = 5000)
    public void taskWithFixedRate() {
        System.out.println("任务执行:"   LocalDateTime.now());
    }
}
४.४ उदाहरणम् : प्रयोगःfixedDelay

निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् पूर्वकार्यस्य निष्पादनं समाप्तस्य १ सेकेण्ड् अनन्तरं निष्पादितं भवति ।

@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
    System.out.println("任务执行:"   LocalDateTime.now());
}
४.५ उदाहरणम् : प्रयोगःinitialDelay

निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् प्रथमं अनुप्रयोगस्य आरम्भस्य १० सेकेण्ड् अनन्तरं, ततः प्रत्येकं ५ सेकेण्ड् मध्ये निष्पादितं भवति:

@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
    System.out.println("任务执行:"   LocalDateTime.now());
}
४.६ cron व्यञ्जनानां प्रयोगः

Cron अभिव्यक्तिः अधिकजटिलसमयसेटिंग्स् प्रदाति, येन भवान् विशिष्टानि निष्पादनसमयानि निर्दिष्टुं शक्नोति । निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् प्रतिदिनं प्रातः १ वादने निष्पादितं भवति:

@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
    System.out.println("任务执行:"   LocalDateTime.now());
}
४.७ कार्यनिष्पादनअपवादानाम् नियन्त्रणम्

अनुसूचितकार्यं अपवादं क्षिप्तुं शक्नोति, वसन्तः प्रदाति@Asyncएनोटेशनं कार्याणि अतुल्यकालिकरूपेण कर्तुं, तथा च उपयोगं कर्तुं@ExceptionHandlerअपवादं नियन्त्रयितुं ।

@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
    if (Math.random()