2014-07-27 6 views
5

मैं एक ओपन सोर्स प्रोजेक्ट, mamute जो CDI का उपयोग करता है के कोड आधार में देख रहा हूँ। सबसे कक्षाओं में एक पदावनत कोई आर्ग निर्माता और एक निर्माता एनोटेट @Inject है। This उल्लिखित परियोजना में एक उदाहरण वर्ग है जिसने इस दृष्टिकोण का उपयोग किया है। तो मेरा सवाल यह है कि, क्या हमारे पास नो-एर्ग कन्स्ट्रक्टर होना है, भले ही हमारे पास @Inject एनोटेटेड कन्स्ट्रक्टर है?जावा में सीडीआई का उपयोग करते समय डिफ़ॉल्ट कन्स्ट्रक्टर आवश्यक है?

import br.com.caelum.vraptor.Controller; 
... 
import br.com.caelum.vraptor.routes.annotation.Routed; 
... 

@Routed 
@Controller 
public class QuestionController { 
    ... 
} 

मैं this javadoc for the Controller annotation पाया है:

उत्तर

7

जुड़ा हुआ वर्ग निम्नलिखित आयात और टिप्पणियां हैं।

@Target(value=TYPE) 
@Documented 
@Retention(value=RUNTIME) 
@Stereotype 
@RequestScoped 
public @interface Controller 

@RequestScoped एनोटेशन यहां नोट करें।

अनुरोध गुंजाइश एक सामान्य गुंजाइश (और साथ ही आवेदन में, सत्र और बातचीत स्कोप) है और JBoss वेल्ड सामान्य scoped सेम के लिए ग्राहक प्रॉक्सी का उपयोग करता है।

निम्नलिखित जावा प्रकार कंटेनर द्वारा प्रॉक्सी नहीं किया जा सकता है: प्रॉक्सी बनाने के लिए वेल्ड निम्नलिखित की जरूरत है सक्षम होने के लिए

  • वर्ग है जो कोई पैरामीटर के साथ एक गैर-निजी निर्माता नहीं है, और
  • ...

स्रोत: Weld - CDI Reference Implementation, 4.9. Client proxies

अन्य मामलों में आपको नो-एर्ग डिफॉल्ट कन्स्ट्रक्टर की आवश्यकता नहीं है (@Singleton beans देखें)।

इसके अलावा लिंक:

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