Guice

6

के साथ ServletContextListener पर निर्भरता इंजेक्शन देना चूंकि ServletContextListener सर्वर द्वारा बनाया गया है, गुइस द्वारा नहीं, मुझे इसे एक साथ काम करने का कोई तरीका नहीं मिल रहा है। ServletContextListener पर मैं guice इंजेक्टर कैसे प्राप्त करूं?Guice

शायद लॉगर या दृढ़ता जैसी सेवाओं को बंद करने का बेहतर तरीका है तो इसे संदर्भ में किया जा रहा है और संदर्भ में उन्हें प्रारंभ किया गया है?

उत्तर

7

विस्तार GuiceServlet सर्वलेट संदर्भ में इंजेक्टर डालता है, तो आप यह कुछ इस तरह कर रही द्वारा प्राप्त कर सकते हैं:

public class MyServletContextListener implements ServletContextListener { 

    @Override 
    public void contextDestroyed(ServletContextEvent sce) { 
     Injector injector = (Injector) sce.getServletContext() 
              .getAttribute(Injector.class.getName());  
    } 
} 
5

आप विस्तार GuiceServletContextListener वर्ग के साथ आसानी से कर सकते हैं। यहाँ एक उदाहरण है:

public class MyServletConfig extends GuiceServletContextListener { 
    @Override 
    protected Injector getInjector() { 
     return Guice.createInjector(new MyGuiceModule(), new MyGuiceServletModule()); 
    } 
} 

यहाँ MyGuiceModule एक सामान्य GuiceModule है और ServletModule एक सर्वलेट से एक है। जबकि Servlet-Container में कोई मुख्य विधि नहीं है, आपको अपने मॉड्यूल को सर्वलेट कंटेनर में सौंपना चाहिए। इस तरह से guice एक सर्वलेट कंटेनर में अपने सामान्य इंजेक्शन मॉड्यूल का प्रबंधन कर सकता है।

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