में क्वालीफायर के साथ स्ट्रिंग इंजेक्ट करें मैं सरल काम करने की कोशिश कर रहा हूं। सीडीआई में योग्य String
(या File
) इंजेक्ट करें।सीडीआई
तो मैं एक क्वालीफायर है:
@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD,METHOD,PARAMETER,TYPE})
@Qualifier
public @interface FilesRepositoryPath {}
मैं एक निर्माता है:
public class FilesRepositoryPathProducer {
@Produces
@FilesRepositoryPath
public String getRepositoryDirectory() {
return "path.taken.from.configuration";
}
}
और मैं इसका इस्तेमाल करने की कोशिश कर रहा हूँ:
@ApplicationScoped
public class FilesRepository {
@Inject
public FilesRepository(@FilesRepositoryPath String filesDirectory) {
//Do some stuff
}
}
हालांकि, वेल्ड का दृष्टांत नहीं कर सकते यह बीन मैं एक अपवाद हो रही है:
org.jboss.arquillian.impl.event.FiredEventException: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001410 The injection point [field] @Inject private za.co.fnb.commercial.dms.file.FilesRepositoryBeanTest.repo has non-proxyable dependencies
मैं जानता हूँ कि String
unproxable है, लेकिन क्यों वेल्ड एक प्रॉक्सी बनाना चाहता है? इसमें @Dependent
गुंजाइश है, इसलिए AFAIK इसे किसी भी तरह प्रॉक्सी नहीं बनाना चाहिए। मैं इसे कैसे कारगर बना सकता हूं?
आप पोस्ट 'FilesRepositoryBeanTest' कृपया की जरूरत है? –
वेल्ड में कोई समस्या दर्ज करें। कोड spec के अनुसार ठीक लगता है। – Bozho
यहां एक नज़र डालें: http://stackoverflow.com/questions/7583871/injecting-a-named-string-using-cdi, एक समान समस्या प्रतीत होती है – Kris