2012-05-11 13 views
9

एक ऑब्जेक्ट को किसी ऑब्जेक्ट को इंजेक्ट कैसे करें?सर्वलेट में निर्भरता इंजेक्शन का उपयोग कैसे करें?

मेरा मतलब है कि मैं एक कन्स्ट्रक्टर डी का उपयोग नहीं कर सकता क्योंकि servlets को servlets कंटेनर द्वारा तत्काल किया जाता है।
और मुझे एक सर्वलेट के लिए सेटटर-आधारित DI को लागू करने का एक अच्छा तरीका भी नहीं दिख रहा है।

क्या मुझे सर्वलेट श्रोता का उपयोग करना चाहिए? क्या कोई सर्वोत्तम अभ्यास है?

पीएस मेरे पास न तो वसंत और न ही गुइस है और न ही कोई अन्य डी ढांचा है, मुझे मैन्युअल निर्भरता इंजेक्शन में दिलचस्पी है।

+2

इस प्रश्न को देखो। शायद यह मदद करेगा: http://stackoverflow.com/q/1992132/891391 – yatul

उत्तर

0

आप सेवाओं जो बनाई गई हैं/कुछ आईओसी कंटेनर (स्प्रिंग, Guice) द्वारा प्रबंधित उपभोग कर सकते हैं

आप एक ContextAware कार्यान्वयन बना सकते हैं और सेम बाहर खींच के रूप में और जब सर्वलेट से आवश्यक

16

यह संभव है हो सकता है सर्वलेट 3.0 के तहत। आप ServletContextListener पंजीकृत करते हैं जो ऐप शुरू होने से ठीक पहले ServletContext की addServlet(String, Servlet) विधि के साथ प्रोग्रामलेटिक रूप से सर्वलेट उदाहरण पंजीकृत करता है। चूंकि आप स्वयं को इंस्टलेट इंस्टेंस कर रहे हैं, आप उन्हें उचित कन्स्ट्रक्टर दे सकते हैं और निर्भरताओं को इंजेक्ट कर सकते हैं।

मैंने कुछ समय पहले an example बनाया जो मूल तकनीक को दर्शाता है।

+1

+1 मुझे 'एडस्वर्लेट' – ewernli

+0

@ewernli के बारे में पता नहीं था: आईएमओ, सन/ओरेकल ने इसे वह प्रचार नहीं दिया जो इसके लायक है। –

+0

धन्यवाद दोस्त, बहुत उपयोगी – 7zark7

0

आप इसे इंजेक्ट करने के लिए जेएनडीआई, जावा नामकरण और निर्देशिका इंटरफेस, और @Resource का उपयोग कर सकते हैं।

संबंधित मुद्दे