"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > अद्वितीय कॉन्फ़िगरेशन के साथ आसानी से एकाधिक स्प्रिंग बीन्स सेट करें

अद्वितीय कॉन्फ़िगरेशन के साथ आसानी से एकाधिक स्प्रिंग बीन्स सेट करें

2024-11-08 को प्रकाशित
ब्राउज़ करें:491

Easily Set Up Multiple Spring Beans with Unique Configurations

दोहराए जाने वाले स्प्रिंग बीन पंजीकरण से थक गए हैं? आप अकेले नहीं हैं!

क्या आपने कभी स्प्रिंग बूट में बार-बार बीन परिभाषाओं से परेशानी महसूस की है? आप अकेले नहीं हैं! अलग-अलग कॉन्फ़िगरेशन के साथ एक ही कक्षा के कई बीन्स को प्रबंधित करना थकाऊ और अव्यवस्थित हो सकता है। मान लीजिए कि आपको कुछ इस तरह की आवश्यकता है:

@Bean
MyService beanA() {
    // Set Configuration for bean A
    Configuration a = new...
    a.setUrl(.....)
    return new MyService(a);
}

@Bean
MyService beanB() {
    // Set Configuration for bean A
    Configuration b = new...
    b.setUrl(.....)
    return new MyService(b);
}

यह कोड जटिल नहीं है, लेकिन यह जल्दी ही दोहराव वाला हो जाता है, खासकर जब एक ही प्रकार के कई बीन्स के साथ काम कर रहा हो। आदर्श रूप से, आपके पास अनावश्यक कोड के बिना अलग-अलग सेटिंग्स के साथ कई उदाहरणों को पंजीकृत करने का एक तरीका होगा।

यह इंटरफ़ेस के प्रत्येक कार्यान्वयन के लिए अद्वितीय बीन्स होने से भिन्न है। इसके बजाय, हम विविधताओं के साथ एक कक्षा स्थापित करने के बारे में बात कर रहे हैं। उदाहरण के लिए, एक ऐसे ऐप के बारे में सोचें जो कई डेटाबेस (जैसे, ग्राहक, रिपोर्टिंग और बैकअप) से जुड़ता है। प्रत्येक कनेक्शन को अपने स्वयं के कॉन्फ़िगरेशन की आवश्यकता होती है, जिससे इसे बिना किसी अव्यवस्था के प्रबंधित करना चुनौतीपूर्ण हो जाता है। हो सकता है कि आप कुछ इस तरह लिखें:

@Bean
DatabaseService primaryDatabaseService() {
    return new DatabaseService("db-url-primary");
}

@Bean
DatabaseService reportDatabaseService() {
    return new DatabaseService("db-url-report");
}

सरल समाधान होने से आपका कॉन्फ़िगरेशन काफी सुव्यवस्थित हो सकता है और आप एप्लिकेशन लॉजिक पर अधिक ध्यान केंद्रित कर सकते हैं। मल्टीबीनकॉन्फिग दर्ज करें - एक छोटी लाइब्रेरी जिसे मैंने एक ही स्प्रिंग बीन के लिए कई कॉन्फ़िगरेशन प्रबंधित करने में सहायता के लिए बनाया था।

मल्टीबीनकॉन्फिग का परिचय

मल्टीबीनकॉन्फिग अलग-अलग कॉन्फ़िगरेशन के साथ एक बीन के कई उदाहरणों के सेटअप को सरल बनाता है। इसके साथ, आप यह कर सकते हैं:

  • दोहराए जाने वाले कोड को कम करें
  • कॉन्फ़िगरेशन प्रबंधन को केंद्रीकृत करें
  • अपना कोडबेस साफ़ और व्यवस्थित रखें

मुख्य विशेषताएं

  • एकाधिक बीन सेटअप: एक ही वर्ग के कई उदाहरणों को परिभाषित करें।
  • कस्टम कॉन्फ़िगरेशन: अपने एप्लिकेशन गुणों के माध्यम से प्रति इंस्टेंस सेटिंग्स को नियंत्रित करें।
  • डिफ़ॉल्ट मान: यदि विशिष्ट कॉन्फ़िगरेशन अनुपलब्ध हैं तो स्वचालित रूप से डिफ़ॉल्ट मान लागू करें।
  • स्वचालित इंजेक्शन: निर्भरता इंजेक्शन के लिए आसानी से @Autowired का उपयोग करें।

चरण-दर-चरण मार्गदर्शिका

1. अपने प्रोजेक्ट में मल्टीबीनकॉन्फिग जोड़ें

अपने pom.xml में निर्भरता शामिल करें:


    io.github.olufemithompson
    multibeanconfig
    0.0.3

2. बीन क्लास सेट करें

अपनी कक्षा को कई उदाहरणों के लिए योग्य बनाने के लिए उसे @MultiBean से चिह्नित करें:

@MultiBean
public class DatabaseService {
    // Your service logic
}

3. अपनी कॉन्फ़िग फ़ाइल में बीन्स को परिभाषित करें

अपनी संपत्तियों या YAML फ़ाइल में अद्वितीय संस्करण परिभाषित करें:

multibean:
  primary-database-service:
    class: DatabaseService
  report-database-service:
    class: DatabaseService

यह प्राथमिक डेटाबेस सेवा और रिपोर्ट डेटाबेस सेवा बीन्स को डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ पंजीकृत करता है। मल्टीबीनकॉन्फिग स्वचालित रूप से कबाब-केस से कैमलकेस में नामों का अनुवाद करता है।

प्रति बीन कॉन्फ़िगरेशन को अनुकूलित करना

अलग-अलग सेटिंग्स निर्दिष्ट करने के लिए, प्रत्येक बीन के कॉन्फ़िगरेशन में सीधे गुण जोड़ें। यहां एक उदाहरण दिया गया है जहां प्रत्येक उदाहरण एक अलग डेटाबेस से जुड़ता है:

@MultiBean
public class DatabaseService {
   @Value("${database-config.connection-url}")
   private String connectionUrl;
}

प्रत्येक इंस्टेंस को application.yml में कॉन्फ़िगर करें:

database-config:
  connection-url: 'jdbc:h2:default-url'

multibean:
  primary-database-service:
    class: DatabaseService
    database-config:
      connection-url: 'jdbc:mysql:primary-db-url'
  report-database-service:
    class: DatabaseService
    database-config:
      connection-url: 'jdbc:postgresql:report-db-url'

यह सेटअप प्रत्येक बीन को एक अद्वितीय कनेक्शन यूआरएल देता है। साझा सेटिंग्स को एक सामान्य अनुभाग में भी परिभाषित किया जा सकता है, जिससे कॉन्फ़िगरेशन कुशल हो जाता है और अतिरेक कम हो जाता है।

कॉन्फ़िगरेशन इंजेक्ट करने के वैकल्पिक तरीके

आपको कॉन्फ़िगरेशन इंजेक्ट करने के लिए केवल @Value पर निर्भर रहने की ज़रूरत नहीं है। स्प्रिंग की @ConfigurationProperties कॉन्फ़िगरेशन क्लास में संपत्तियों को एनकैप्सुलेट करने की अनुमति देती है:

@ConfigurationProperties("database-config")
@Configuration
public class DatabaseConfig {
    private String connectionUrl;
    private int connectionTimeout;
    // Getters and Setters
}

फिर, सीधे DatabaseConfig इंजेक्ट करें:

@MultiBean
public class DatabaseService {
   private final DatabaseConfig databaseConfig;
   public DatabaseService(DatabaseConfig databaseConfig) {
       this.databaseConfig = databaseConfig;
   }
}

कॉन्फ़िगर किए गए बीन्स का उपयोग करना

मल्टीबीनकॉन्फिग के साथ, अपने विशिष्ट रूप से कॉन्फ़िगर किए गए बीन्स को इंजेक्ट करें जैसा कि आप किसी भी स्प्रिंग निर्भरता के साथ करेंगे:

@Service
public class ApplicationService {
   private final DatabaseService primaryDatabaseService;
   private final DatabaseService reportDatabaseService;

   public ApplicationService(DatabaseService primaryDatabaseService, DatabaseService reportDatabaseService) {
       this.primaryDatabaseService = primaryDatabaseService;
       this.reportDatabaseService = reportDatabaseService;
   }
}

अंतिम विचार

मल्टीबीनकॉन्फ़िग स्प्रिंग बूट अनुप्रयोगों में बीन प्रबंधन को सुव्यवस्थित करता है, विशेष रूप से फीचर फ़्लैग, डेटा स्रोत या विशिष्ट एपीआई कनेक्शन को संभालते समय। यह अतिरेक को कम करता है, आपके कोड को साफ रखता है, और रखरखाव को बढ़ाता है। इसे आज़माएं, और मुझे बताएं कि यह आपके प्रोजेक्ट्स के लिए कैसे काम करता है!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/thompsonolufemi/easily-set-up-multiple-spring-beans-with-unique-configurations-3df1?1 यदि कोई उल्लंघन है, तो कृपया [email protected] पर संपर्क करें इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3