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