2017-08-28 4 views
5

मैं एक स्प्रिंग Microservices ट्यूटोरियल के माध्यम से जा रहा हूँ और यह उस में निम्न पंक्ति है:हम एक SpringApplicationBuilder का उपयोग कब करते हैं?

new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args); 

समय मैं इस एक स्प्रिंग बूट आवेदन प्रारंभ करेंगे देखना के अधिकांश:

SpringApplication.run(Application.class, args); 

यह वह जगह है पहली बार मैंने SpringApplicationBuilder देखा है। हमें सामान्य रूप से इसका उपयोग कब करना चाहिए?

+1

क्या आपने कक्षा में जावाडॉक्स पढ़ा था? – chrylis

+1

मैंने किया। ऐसा लगता है कि वे समान वर्ग हैं, लेकिन SpringAplicationBuilder प्रोफाइल तक आदि पर अधिक नियंत्रण प्रदान करता है, आदि।इस मामले में हालांकि ऐसा लगता है कि ZuulAplplication शायद स्प्रिंग ऐप्लिकेशंस के साथ ठीक रहेगा, लेकिन लेखक ने SpringApplicationBuilder का उपयोग करना चुना ...? – Ole

+0

इस मामले में, ऐसा लगता है कि उपयोग अनावश्यक है। 'वेब' पैरामीटर सामान्य रूप से स्वत: निर्धारित होता है कि उचित निर्भरताएं उपलब्ध हैं या नहीं; स्पष्ट रूप से इसे 'सत्य' पर सेट करना या तो स्टार्टअप असफल हो जाएगा या अनावश्यक होगा। – chrylis

उत्तर

2

हमारे आवेदन में हमने starter एप्लिकेशन में SpringApplicationBuilder का उपयोग किया है। starter एक साधारण एप्लिकेशन है जो प्रोग्रामिंग के वास्तविक अनुप्रयोग उदाहरण शुरू करेगा।

प्रक्रियाओं की संख्या शुरू करने के लिए प्रक्रियाओं की संख्या और प्रक्रिया वेब/स्टैंडअलोन का प्रकार starter आवेदन के तर्क के रूप में पारित किया जाएगा, आवेदन उदाहरण शुरू होने के तर्कों के आधार पर। हमने राज्य प्रबंधन के लिए वेब एप्लिकेशन के रूप में शुरू करने के लिए -w का उपयोग किया है।

boolean isWeb = // options parser, parse -w 
new SpringApplicationBuilder(SpringBootAngularApp.class).web(isWeb).run(args); 

ही

SpringApplication sp = new SpringApplication(SpringApplicationBuilder.class);  
sp.setWebEnvironment(false); 
sp.run(args); 

हम भी SpringApplicationBuilder साथ बैनर अनुकूलित कर सकते हैं, लॉगर्स करने का एक और तरीका है।

अधिक उपयोग के लिए दस्तावेज़ पढ़

2

मान लीजिए कि आप एक समस्या है जहाँ आप विभिन्न डेटाबेस या संरचनाओं के साथ काम करने की जरूरत को हल करना है कि चलो और हर एक दूसरे से अलग हो सकता है, उस मामले में मैं का प्रयोग करेंगे की जरूरत है एक SpringApplicationBuilder दृष्टिकोण, क्योंकि प्रत्येक डोमेन को अभिभावक और बाल संदर्भ के निर्माण के माध्यम से अलग किया जा सकता है और विभिन्न डोमेन समस्याओं को मिश्रित करने की कोई आवश्यकता नहीं है, उदाहरण के लिए आपके पास एप्लिकेशन 1 और एप्लिकेशन 2 कॉन्फ़िगरेशन हो सकता है, प्रत्येक व्यक्ति अपने डोमेन, नियंत्रक और भंडार के साथ हो सकता है लेकिन आप इस सभी जटिलता को मिश्रण नहीं करना चाहते हैं और इसके बजाय आप SpringApplicationBuilder

के साथ दो अलग-अलग कॉन्फ़िगरेशन बना सकते हैं
SpringApplicationBuilder appBuilder = new SpringApplicationBuilder() 
     .sources(Parent.class); 

appBuilder.child(Application1.class).run(args); 
appBuilder.child(Application2.class).run(args); 

कुछ अतिरिक्त जानकारी: Post with an example of SpringApplicationBuilder, Java Doc of SpringBuilder और Other example of how use SpringApplicationBuilder

2

एक सामान्य उपयोग के मामले है कि मैं भर में आया है, जब आप एक पारंपरिक तैनाती युद्ध फ़ाइल Weblogic आदि में तैनात किया जा करने के लिए चाहते हैं - Traditional deployment

के साथ SpringApplication, अधिकांश एप्लिकेशन सेटिंग्स में डिफ़ॉल्ट मानों जैसे प्रोफाइल और प्रॉपर्टी फाइलों का उपयोग करने के लिए हार्ड कोड कोड किए गए हैं। आपको इसे समझने के लिए इस वर्ग के कोड को देखने की आवश्यकता है।

SpringApplicationBuilder के साथ, आप एप्लिकेशन प्रारंभ होने से पहले इन अनुप्रयोगों में से कुछ डिफ़ॉल्ट सेटिंग्स को बदल सकते हैं, भले ही इनमें से अधिकतर सेटिंग्स में समझदार डिफ़ॉल्ट मान हों। तो कोड की कुछ पंक्तियों के साथ, आप अलग-अलग उद्देश्यों (एम्बेडेड परिनियोजन, बाहरी तैनाती, परीक्षण इत्यादि) के लिए विभिन्न सेटिंग्स के साथ एक अलग अनुप्रयोग बना सकते हैं, जबकि आपका वास्तविक अंतर्निहित व्यावसायिक तर्क समान रहता है।

संबंधित मुद्दे