मेरे पास एक स्प्रिंग बूट एप्लिकेशन है। मैंने बहुत सारी निर्भरताएं जोड़ी हैं (दुर्भाग्य से, लगता है कि मुझे उन सभी की आवश्यकता है) और स्टार्टअप का समय काफी बढ़ गया। सिर्फ SpringApplication.run(source, args)
10 सेकंड का समय ले रहा है ।
हालांकि इसकी तुलना "उपयोग" करने के लिए बहुत अधिक नहीं हो सकती है, मैं दुखी हूं कि यह बहुत अधिक लेता है, क्योंकि यह विकास प्रवाह को तोड़ता है। इस बिंदु पर आवेदन खुद ही छोटा है, इसलिए मेरा मानना है कि अधिकांश समय अतिरिक्त निर्भरता से संबंधित है, न कि ऐप कक्षाओं से।
मुझे लगता है कि समस्या वर्गपथ स्कैनिंग है, लेकिन मुझे यकीन नहीं है कि कैसे:
- पुष्टि करें कि यह मुद्दा है (यानी स्प्रिंग बूट को "डिबग" कैसे करें)
- यदि यह वास्तव में कारण है, तो मैं इसे कैसे सीमित कर सकता हूं, इसलिए यह तेज हो जाता है? उदाहरण के लिए, अगर मुझे पता है कि कुछ निर्भरता या पैकेज में ऐसा कुछ भी नहीं है जिसे स्प्रिंग को स्कैन करना चाहिए, तो क्या इसे सीमित करने का एक तरीका है?
मेरा मानना है कि स्टार्टअप के दौरान स्प्रिंग को समांतर बीन इनिशियलाइज़ करने से चीजों को गति मिलेगी, लेकिन यह वृद्धि अनुरोध 2011 से खुला है, बिना किसी प्रगति के। मैं स्वयं स्प्रिंग बूट में कुछ अन्य प्रयास देखता हूं, जैसे कि टॉमकैट जारस्कैनिंग गति में सुधार की जांच करें , लेकिन यह टॉमकैट विशिष्ट है और इसे छोड़ दिया गया है।
यह लेख:
यद्यपि एकीकरण परीक्षणों के उद्देश्य से, उपयोग करने का सुझाव देता है lazy-init=true
, हालांकि मुझे नहीं पता कि जावा कॉन्फ़िगरेशन का उपयोग करके स्प्रिंग बूट में सभी सेम पर यह कैसे लागू किया जाए - यहां कोई संकेत?
किसी भी (अन्य) सुझावों का स्वागत किया जाएगा।
@ComponentScan
उन लोगों के लिए अन्य पैकेज परिभाषित हैं जो स्कैन किए गए हैं। एक और बात यह सुनिश्चित करने के लिए है कि आपने डिबग या ट्रेस लॉगिंग को सक्षम नहीं किया है क्योंकि आमतौर पर लॉगिंग धीमी है, बहुत धीमी है।