2010-11-08 17 views
7

मैं निम्नलिखित कोड आ रही हैं:जर्सी के साथ संसाधनों में निर्भरता को इंजेक्ट कैसे करें?

@Path("stores") 
class StoreResources { 

    private ServerConfig config; 

    @GET 
    public String getAll() { 
    //do some stuff with ServerConfig 
    } 
} 

और मैं ServerConfig वस्तु की जरूरत है बाहर से इस वर्ग में इंजेक्ट किया जा करने के लिए और getAll() विधि के अंदर इसका इस्तेमाल।

इसे प्राप्त करने के संभावित तरीके क्या हैं? क्या मुझे गिइस या स्प्रिंग जैसे डी फ्रेमवर्क का उपयोग करना चाहिए?

उत्तर

5

यह जर्सी http://javaswamy.blogspot.com/2010/01/making-jersey-work-with-spring.html

नतीजा आप झंडा क्षेत्रों हैं कि व्याख्या का उपयोग किया जाता है के तहत वसंत इंजेक्शन के बारे में एक अच्छा ब्लॉग इंजेक्ट किया जा करने के लिए, एक उदाहरण संसाधन जा रहा है

package com.km.services; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import org.springframework.context.annotation.Scope; 
import org.springframework.stereotype.Component; 
import com.sun.jersey.spi.inject.Inject; 
import com.km.spring.SimpleBean; 

@Path("/hello") 
@Component 
@Scope("request") 
public class HelloResource { 

    @Inject private SimpleBean simpleBean; 

    @GET 
    @Produces("text/plain") 
    public String getMessage() { 
    return simpleBean.sayHello(); 
    } 
} 

मेरी प्रयोजनों के विन्यास के लिए है अत्यधिक मुश्किल था इसलिए मैंने बीन को हल करने के लिए एक स्थिर वसंत संकल्प कारखाने का उपयोग किया। जैसे।

private SimpleBean simpleBean = SpringBeanFactory.getBean("mySimpleBean"); 
2

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

@Path("/resource1") 
public class ResourceBean1 { 

    @Context 
    HttpServletRequest servletRequest; 

    @Context 
    ServletConfig servletConfig; 

    @GET 
    @Produces("text/plain") 
    public String describe() { 
     return "Hello World from resource 1 in servlet: '" + 
       servletConfig.getServletName() + 
       "', path: '" + 
       servletRequest.getServletPath() + 
       "'"; 
    } 

} 

जब सर्वलेट तो ServletConfig, ServletContext, HttpServletRequest और HttpServletResponse का उपयोग कर एक JAX-आरएस आवेदन की तैनाती @Context का उपयोग कर इंजेक्शन के लिए उपलब्ध हैं: यहाँ नमूना कोड है कि एक संसाधन पर एक HttpServletRequest और एक ServletConfig injects है।

+5

यह 'सर्वलेट कॉन्फिग' नहीं है, यह 'सर्वरकॉन्फिग' है, जो शायद एक कस्टम ऑब्जेक्ट है जिसे वह इंजेक्शन देना चाहता है। – GuiSim

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