मैंने कुछ पोस्टों में Spring MVC
और Portlets
के बारे में पढ़ा है कि फ़ील्ड इंजेक्शन की अनुशंसा नहीं की जाती है। क्योंकि मैं एक प्राप्त करने की कोशिश कर रहा हूं इसलिए मैंने खुद से पूछा कि क्या मैं फ़ील्ड इंजेक्शन का उपयोग कर रहा हूं और मैं इसका उत्तर नहीं दे सकता। के रूप में मैं इसे क्षेत्र इंजेक्शन को समझने है अगर आप @Autowired
इस तरह के साथ एक विशेषता में एक Bean
इंजेक्षन:फील्ड इंजेक्शन वास्तव में क्या है और इससे कैसे बचें?
CartController.java:
...
@Autowired
private Cart cart;
...
BookshopConfiguartion.java:
@Configuration
public class BookShopConfiguration {
@Bean
public Cart cart(){
return new Cart();
}
//more configuration
मेरा Cart.java
का उपयोग स्टोर करने और जानकारी प्रदान करने के लिए किया जाता है गाड़ी में किताबें।
अपना शोध के दौरान मैं के बारे में निर्माता इंजेक्शन पढ़ें:
MyComponent.java:
...
public class MyComponent{
private Cart cart;
@Autowired
public MyComponent(Cart cart){
this.cart = cart;
}
...
फायदे और इंजेक्शन के इन प्रकार के दोनों का नुकसान क्या हैं?
संपादित करें 1: के रूप में इस सवाल का this question की डुप्लीकेट मैं यह जाँच के रूप में चिह्नित किया गया है। क्योंकि कोई कोड उदाहरण नहीं हैं, न तो प्रश्न में और न ही जवाब में यह मुझे स्पष्ट नहीं है कि अगर मैं अपने अनुमान के साथ सही हूं कि इंजेक्शन प्रकार का उपयोग मैं कर रहा हूं।
यह सामान्य बात नहीं है और दुनिया को बताने में अच्छा नहीं है "फील्ड इंजेक्शन से बचा जाना चाहिए"। पेशेवरों और contras दिखाएं और दूसरों को खुद को तय करने दें;) कई लोगों के पास अन्य अनुभव और चीजों को देखने का अपना तरीका है। – dit
यह मामला यहां हो सकता है, लेकिन ऐसे कई मामले हैं जहां समुदाय कुछ हतोत्साहित करने के लिए आम सहमति के लिए आया है। उदाहरण के लिए, हंगेरियन नोटेशन लें। – Jannik
आप टेस्टेबिलिटी और निर्भरता दृश्यता के रूप में कुछ अच्छे अंक देते हैं लेकिन मैं सभी के साथ सहमत नहीं हूं। कन्स्ट्रक्टर इंजेक्शन में कोई कमी नहीं है? कक्षा में इंजेक्ट करने के लिए 5 या 6 फ़ील्ड होने के कारण कॉल की असली रचनाएं वांछनीय हो सकती हैं। मैं अपरिवर्तनीयता के साथ भी आपसे असहमत हूं। अंतिम क्षेत्र होने के लिए एक वर्ग अपरिवर्तनीय होना अनिवार्य नहीं है। यह बेहतर है। जो बहुत अलग है। – davidxxx