2012-10-31 34 views
29

ऐसी कक्षा से प्राप्त करना यदि आपके पास कोई अभिभावक वर्ग है जो @PostConstruct एनोटेशन का उपयोग करता है और आप इससे प्राप्त होने वाली बाल कक्षा बनाते हैं। क्या @PostConstruct विधि प्रत्येक बार बाल वर्ग का उदाहरण बनने के लिए स्वचालित रूप से बुलाया जाएगा? चूंकि @PostConstruct प्रत्येक बार जब माता-पिता का उदाहरण बनाया जाता है तो विधि को बुलाया जाता है।एनोटेशन @ पोस्टकस्ट्रक्चर

मुझे पता है कि बाल वर्ग में यह हमारे लिए बिना कॉल किए स्वचालित रूप से super(); पर कॉल करता है।

मुझे यकीन नहीं है कि @PostConstruct एनोटेशन स्वचालित रूप से कॉल किया जाता है यदि वह बच्चा वर्ग super(); कन्स्ट्रक्टर कहता है।

+2

रखें 'println()' दोनों तरीकों में कॉल, अपना एप्लिकेशन आग, और देखते हैं कि मुद्रित हो जाता है। – millimoose

+1

@millimoose की तरह सुझाव दिया गया है, आप इसे स्वयं जांच सकते हैं और अपने प्रश्न का उत्तर दे सकते हैं। मुझे लगता है कि यह भविष्य में दूसरों के लिए अच्छा होगा। –

+1

यह इंजेक्शन कर रहा है पर निर्भर करता है। मुझे लगता है कि '@ पोस्टकॉन्स्ट्रक्चर' दोनों [टैग: सीडीआई] और [टैग: ईजेबी 3], और शायद अन्य ढांचे द्वारा भी पहचाना जाता है, और ये अनुमानतः अलग-अलग व्यवहार कर सकते हैं। आप यहां किस ढांचे का उपयोग कर रहे हैं? –

उत्तर

29

इस परिदृश्य का परीक्षण करने के बाद, बेस क्लास में @PostConstruct विधि स्वचालित रूप से कॉल की जाएगी।

प्रवाह इस प्रकार है:

  1. जब बच्चा कक्षा बनाई गई है, आप बच्चे वर्ग के निर्माता में हैं, आप तो माता-पिता वर्ग में स्वचालित रूप से मजबूर हैं।
  2. एक बार माता-पिता वर्ग का कन्स्ट्रक्टर पूरा हो जाने पर आपको वापस बाल वर्ग के निर्माता को भेजा जाता है।
  3. एक बार बच्चे को कक्षा निर्माता किया जाता है आप अपने आप पैरेंट कक्षाएं @PostConstruct विधि के लिए भेजा जाता
+10

मेरे परीक्षण में, यदि आप सुपर के '@ पोस्टकोनस्ट्रक्चर' को ओवरराइड कर रहे हैं, तो बच्चे को पहले कहा जाता है। यदि आप ओवरराइड नहीं कर रहे हैं, तो माता-पिता को पहले कहा जाता है। – Basil