यदि बीन के पास अनुरोध का दायरा है, तो @PostConstruct हर बार निष्पादित किया जाएगा। प्रबंधित बीन तत्काल होने के बाद इसे बुलाया जाएगा, लेकिन बीन को दायरे में रखा जाने से पहले। इस तरह की कोई विधि कोई तर्क नहीं लेती है, शून्य लौटाती है, और फेंकने के लिए एक चेक अपवाद घोषित नहीं कर सकता है। विधि सार्वजनिक, संरक्षित, निजी, या पैकेज निजी हो सकती है। यदि विधि एक अनचेक अपवाद फेंकता है, तो जेएसएफ कार्यान्वयन को प्रबंधित बीन को सेवा में नहीं रखना चाहिए और उस प्रबंधित बीन इंस्टेंस पर कोई और menthods नहीं कहा जाएगा।
public TrainingClassForm() {
}
@PostConstruct
public void init() {
if (this.trainingListModel.getListDataModel() != null) {
this.trainingListModel.getAllTrainingClasses();
}
}
this question of stack
करने के लिए आप reffering एक प्रबंधित सेम में, @PostConstruct
नियमित जावा वस्तु निर्माता के बाद कहा जाता है।
जब निर्माता को बुलाया जाता है, तो बीन अभी तक शुरू नहीं हुआ है - यानी कोई निर्भरता इंजेक्शन नहीं दी जाती है। @PostConstruct
विधि में सेम पूरी तरह से आरंभ और आप निर्भरता
@PostConstruct
उपयोग कर सकते हैं अनुबंध गारंटी देता है कि है कि इस विधि सेम जीवन चक्र में द्वारा सक्रिय किया जाएगा केवल एक बार होता है। ऐसा हो सकता है (हालांकि असंभव) कि एक बीन को आंतरिक काम में कंटेनर द्वारा कई बार तत्काल किया जाता है, लेकिन यह गारंटी देता है कि @PostConstruct
केवल एक बार लागू किया जाएगा।
यदि आपकी कक्षा कन्स्ट्रक्टर में अपने सभी प्रारंभिक कार्य करती है, तो @PostConstruct
वास्तव में अनावश्यक है।
हालांकि, यदि आपकी कक्षा में इसकी निर्भरताएं सेटर विधियों का उपयोग करके इंजेक्शन दी गई हैं, तो कक्षा का कन्स्ट्रक्टर ऑब्जेक्ट को पूरी तरह से प्रारंभ नहीं कर सकता है, और कभी-कभी कुछ प्रारंभिक विधियों को सभी सेटटर विधियों के नाम पर करने की आवश्यकता होती है, इसलिए @PostConstruct
का उपयोग केस see this और this
[@PostConstruct का उपयोग क्यों करें?] (Http://stackoverflow.com/q/3406555/1055089) – Vrushank