2011-04-04 13 views
5

में एक Guice इंजेक्टर प्राप्त करें। मुझे पहले से ही ServletContext का उपयोग करके एक समाधान मिला है, लेकिन मैं इस समाधान से वास्तव में संतुष्ट नहीं हूं, क्योंकि यह एप्लिकेशन की परत आर्किटेक्चर को तोड़ देता है। ऐप की गहरी परतों में ServletContext का उपयोग करने के साथ मैं ठीक नहीं हूं। क्या आप एक और तरीका जानते हैं?मैं कैसे मैं एक इंजेक्टर एक वेब अनुप्रयोग में Guice का उपयोग कर प्राप्त कर सकते हैं देख रहा हूँ एक वेब अनुप्रयोग

एक स्पष्ट समाधान इंजेक्टर की मेजबानी के लिए अपने खुद के सिंगलटन बनाने के लिए किया जाएगा, लेकिन यह है कि Guice कुछ बाहर के बॉक्स तरीका यह है की पेशकश करनी चाहिए लगता है। मैं सिर्फ एक अभी तक ...

उत्तर

6

आप Guice सर्वलेट का उपयोग कर रहे हैं और आप जिस कक्षा में ही इंजेक्ट किया जाता है इंजेक्टर चाहते संभालने मान लिया जाये कि नहीं मिल रहा है, बस इंजेक्टर इंजेक्षन।

1

आपका आवेदन जीवन चक्र पूरी तरह से सर्वलेट कंटेनर द्वारा नियंत्रित किया जाता है, तो एक संदर्भ श्रोता का उपयोग शुरू करने के लिए अपने आवेदन के आरंभीकरण प्रक्रिया है कि इस तथ्य के तार्किक परिणाम है। इस प्रकार मैं यह नहीं कहूंगा कि यह तथ्य स्तरित वास्तुकला को तोड़ नहीं रहा है, बस मॉडल परत में गतिविधि शुरू करने के वेब अनुरोध की तरह ही स्तरित आर्किटेक्चर को तोड़ता है।

लेकिन आदेश स्तरित वास्तुकला नहीं तोड़ करने के लिए, सर्वलेट संदर्भ श्रोता अन्य परतों के विवरण के साथ ही शामिल नहीं किया जाना चाहिए, यह केवल प्रारंभ आरंभ करना होगा। इस प्रकार सभी गिइस से संबंधित कोड, उदाहरण के लिए एक गिइस इंजेक्टर फैक्ट्री, अपनी परत में स्थित होना चाहिए। संदर्भ श्रोता की भूमिका एक फोन है कि प्रारंभ में शुरू होता है तक सीमित होना चाहिए (उदाहरण के लिए:() MyGuiceFactory.init या MyApp.init())।

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