मैं स्प्रिंग कोर प्रमाणीकरण के लिए अध्ययन कर रहा हूं, मुझे इस बारे में कुछ संदेह हैं कि वसंत बीन्स लाइफसाइकिल और विशेष रूप से बीन पोस्ट प्रोसेसर के बारे में कुछ संदेह है।वसंत बीन पोस्ट प्रोसेसर वास्तव में कैसे काम करता है?
तो मैं इस स्कीमा है:
यह इसका क्या मतलब मेरे लिए बहुत स्पष्ट है:
लोड बीन परिभाषाएँ चरण होता है मेंकि:
@ कॉन्फ़िगरेशन कक्षाएं प्रक्रिया हैं एड और/या @ कॉम्पोनेंट्स स्कैन किए गए हैं और/या XML फ़ाइलों पार्स किए गए हैं।
बीन परिभाषाओं BeanFactory को जोड़ा गया (प्रत्येक का आईडी के तहत अनुक्रमित)
विशेष BeanFactoryPostProcessor सेम लागू, यह किसी भी सेम की परिभाषा को संशोधित कर सकते (संपत्ति-प्लेसहोल्डर के लिए उदाहरण के लिए महत्व देता प्रतिस्थापन)।
फिर सेम निर्माण चरण में होता यह है कि: (अपनी निर्भरता इंजेक्शन सही क्रम में बनाया)
प्रत्येक फली बेसब्री से डिफ़ॉल्ट रूप से instantiated है।
निर्भरता इंजेक्शन के बाद प्रत्येक बीन एक पोस्ट-प्रोसेसिंग चरण के माध्यम से जाता है जिसमें आगे कॉन्फ़िगरेशन और प्रारंभिकरण हो सकता है।
पोस्ट प्रसंस्करण के बाद सेम पूरी तरह से आरंभ और उपयोग के लिए तैयार किया जाता है (अपने आईडी द्वारा पता लगाया जब तक संदर्भ नष्ट हो जाता है)
ठीक है, यह मेरे लिए बहुत स्पष्ट है और मैं यह भी कहा कि वहाँ पता
initializers: सेम प्रारंभ करता है, तो निर्देश दिए (यानी @PostConstruct) हैं कि सेम पोस्ट प्रोसेसर के दो प्रकार हैं।
सभी बाकी: कि अतिरिक्त विन्यास के लिए अनुमति देते हैं और मैं इस स्लाइड पोस्ट कि से पहले या इनिशियलाइज़ कदम
होने लग जाते हैं और हो सकता है:
तो यह मेरे लिए बहुत स्पष्ट है प्रारंभकर्ता बीन पोस्ट पीआर क्या करता है ocessors (वे @PostContruct एनोटेशन के साथ एनोटेटेड विधियां हैं और जिन्हें स्वचालित रूप से सेटटर विधियों के बाद तुरंत बुलाया जाता है (इसलिए निर्भरता इंजेक्शन के बाद), और मुझे पता है कि मैं कुछ प्रारंभिक बैच करने के लिए उपयोग कर सकता हूं (जैसे कैश को पॉप्युलेट करना पिछले उदाहरण)।
लेकिन वास्तव में अन्य बीन पोस्ट प्रोसेसर का प्रतिनिधित्व करता है? इसका अर्थ यह है कि प्रारंभिक चरण से पहले या बाद में ये प्रदर्शन किए जाते हैं?
तो मेरा बीन तत्काल है और इसे निर्भरता इंजेक्शन किया जाता है, इसलिए प्रारंभिक चरण प्रतिबिंबित होता है (@PostContruct एनोटेड विधि के निष्पादन द्वारा)। इसका मतलब क्या है कि एक बीन पोस्ट प्रोसेसर प्रारंभिक चरण से पहले किया जाता है? इसका मतलब है कि यह @PostContruct एनोटेटेड विधि निष्पादन से पहले होता है? तो int का मतलब है कि यह निर्भरता इंजेक्शन से पहले हो सकता है (इससे पहले कि सेटर विधियों को बुलाया जाता है)?
और प्रारंभिक चरण के बाद यह निष्पादित किया गया है। इसका मतलब है कि इसके बाद ऐसा होता है कि @PostContruct एनोटेटेड विधि का बहिष्कार, या क्या?
मैं आसानी से मेरे सिर में लगा सकते हैं कारण है कि मैं एक @PostContruct annoted विधि की जरूरत है, लेकिन मैं सेम पोस्ट प्रोसेसर के अन्य प्रकार के कुछ विशिष्ट उदाहरण समझ नहीं सकता, तुम मुझे जब उपयोग किया जाता है में से कुछ विशिष्ट उदाहरण दिखा सकते हैं ?
Tnx
वास्तविक जीवन उदाहरण के लिए कुडोस! – raiks
वास्तविक उपयोग-मामले प्रदान करने के लिए धन्यवाद और न केवल सिद्धांत –