एक और question में मैंने पूछा, एक चिंता उठाई है कि वसंत ढांचा सुरक्षित नहीं है। क्या यह सच है, या तय है, और क्या आप एक उदाहरण दे सकते हैं जिसका अर्थ वास्तव में है?वसंत ढांचा 3.0 प्रकार-सुरक्षित
उत्तर
सबसे पहले, एक निर्भरता इंजेक्शन ढांचे के लिए "टाइप-सेफ" का क्या अर्थ है। मैं क्या सोच सकता हूं कि आप एक प्रकार निर्दिष्ट करके संदर्भ से एक बीन प्राप्त कर सकते हैं, न सिर्फ एक बीन नाम। वसंत 3 यह अनुमति देता है।
अन्यथा, प्रकार-सुरक्षा का अर्थ है कि जब आप अपनी निर्भरताओं को उनके प्रकार से परिभाषित कर सकते हैं। और आप वसंत के सभी संस्करणों में ऐसा कर सकते हैं।
एक और चीज संकलन-समय सुरक्षा है। वसंत पूर्व-3.0 के साथ जब आपको दो बीन्स के बीच अंतर करना होता था जो उनके स्ट्रिंग-आधारित नाम का उपयोग करके समान इंटरफ़ेस (या सुपरटेप) साझा करते थे। वसंत 3.0 में आप एनोटेशन-आधारित क्वालीफायर का उपयोग कर सकते हैं (javax.inject.Qualifier
का उपयोग करके), इसलिए यह संकलित-समय भी सुरक्षित है।
जेनिक्स का उपयोग करने का एक और बात उल्लेख करना है। आप वसंत में उदाहरण के लिए @Inject List<MyService>
कर सकते हैं।
यह इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे करते हैं और टाइप-सुरक्षित द्वारा आपका क्या मतलब है (बाद में अधिक जानकारी के लिए बोझो का उत्तर देखें): यदि आप अपने बीन्स का उत्पादन करने के लिए एक्सएमएल कॉन्फ़िगरेशन का उपयोग करते हैं, तो आप शायद टाइप-सुरक्षित हैं स्टार्ट-अप के बाद।
हालांकि, यदि आप नई जावा बीन कॉन्फ़िगरेशन (जिसकी अपनी सीमाएं हैं) का उपयोग करते हैं तो आपको संकलन-समय सुरक्षा मिलती है।
मैं पूर्व में उत्तराधिकारी की वकालत नहीं कर रहा हूं, लेकिन यह विचार करने के लिए कुछ है।
नाम निर्दिष्ट किए बिना @Qualifier
का उपयोग कर इंजेक्शन सेम की पहचान करने के लिए एक कस्टम एनोटेशन को परिभाषित करें, हम एक कस्टम एनोटेशन बनाना होगा। यह सीडीआई में जेएसआर 330 एनोटेशन (इंजेक्ट) के उपयोग के लिए एक समान प्रक्रिया है।
@Target({ElementType.Field, ElementType.Parameter})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @Interface Student {
}
अब EntityDao इंटरफ़ेस के कार्यान्वयन के लिए इस कस्टम एनोटेशन आवंटित
@Component
@Student
public class StudentDao implements EntityDao {
}
@Component स्प्रिंग बताती है कि यह एक सेम परिभाषा। @ स्टूडेंट आईओसी द्वारा स्टूडेंट आईओसी द्वारा एंटिटीडाओ के कार्यान्वयन के संदर्भ में छात्रदाओ को एंटिटीडाओ के कार्यान्वयन के रूप में पहचानने के लिए उपयोग किया जाता है। @Autowired और कस्टम क्वालीफायर का उपयोग कर बीन इंजेक्ट करें इस तरह कुछ।
@Autowired
@Student
private EntityDao studentDao; // So the spring injects the instance of StudentDao here.
इस स्ट्रिंग-नाम है, जो गलत वर्तनी किया जा सकता है और कठिन बनाए रखने के लिए कर रहे हैं के कम उपयोग करता है। - मुझे यह पोस्ट बहुत उपयोगी लगता है। http://www.coolcoder.in/2011/08/how-to-use-type-safe-dependency.html
- 1. वसंत सुरक्षा 3.0
- 2. एक अच्छा वसंत ढांचा धोखा चीट
- 3. वसंत MVC ढांचा बहुत ही बुनियादी डिस्पैचर सवाल
- 4. वसंत 3.0 एमवीसी बाध्यकारी नेस्टेड ऑब्जेक्ट
- 5. वसंत सुरक्षा 3.0- मूल http प्रमाणीकरण संवाद
- 6. वसंत 3.0 आरईएसटी कार्यान्वयन या जर्सी?
- 7. 3.0
- 8. वसंत 3.0 के लिए कौन सा मेवेन निर्भरता शामिल है?
- 9. वसंत एमवीसी 3.0 के साथ हैंडलर इंटरसेप्टर पंजीकृत कैसे करें?
- 10. वसंत वेबएमवीसी और वसंत सुरक्षा
- 11. एनईटी 3.0
- 12. स्प्रिंग 3.0
- 13. वसंत
- 14. स्प्रिंग 3.0 सुरक्षा - प्रमाणीकरण
- 15. वसंत
- 16. जर्सी डब्ल्यू/स्प्रिंग 3.0?
- 17. संस्करण 3.0.x
- 18. 3.0
- 19. वसंत
- 20. वसंत 3
- 21. स्प्रिंग 3.0
- 22. वसंत
- 23. वसंत
- 24. जावा एमवीसी वेब विकास ढांचा?
- 25. वसंत सुरक्षा
- 26. वसंत सुरक्षा
- 27. वसंत एमवीसी
- 28. वसंत एमवीसी बनाम सीम
- 29. getSupportFragmentManager() बनाम getFragmentManager() Android 3.0
- 30. घटनाक्रम ढांचा?
यह प्रश्न अधिक उपयोगी होगा यदि आप टाइप-सुरक्षित, जो आप अपने डी ढांचे में खोज रहे हैं, बेहतर तरीके से परिभाषित किया गया है –
@matt b - उन्होंने इस सवाल से पूछा था ('क्या है टाइप-सेफ ') उस व्यक्ति को जो कहता है कि वसंत लिंक सुरक्षित प्रश्न में सुरक्षित नहीं है। लेकिन एक जवाब प्राप्त नहीं हुआ, इसलिए यह सवाल। – Bozho
आह मैं देखता हूं, अब और अधिक समझ में आता है। मैंने अपना डाउनवोट हटा दिया है –