2015-05-29 8 views
9

में एनोटेशन के माध्यम से कन्स्ट्रक्टर को पैरामीटर इंजेक्ट करें मैं स्प्रिंग बूट एनोटेशन कॉन्फ़िगरेशन का उपयोग कर रहा हूं। मेरे पास एक वर्ग है जिसका कन्स्ट्रक्टर 2 पैरामीटर (स्ट्रिंग, एक और कक्षा) स्वीकार करता है।स्प्रिंग

Fruit.java

public class Fruit { 
    public Fruit(String FruitType, Apple apple) { 
      this.FruitType = FruitType; 
      this.apple = apple; 
     } 
} 

Apple.java

public class Apple { 

} 

मैं एक वर्ग निर्माता के लिए मानकों को इंजेक्शन लगाने के द्वारा ऊपर वर्ग autowire की जरूरत है ("लोहा फल", एप्पल वर्ग)

Cook.java

public class Cook { 

    @Autowired 
    Fruit applefruit; 
} 

मानकों ("लोहा फल", एप्पल वर्ग)

एक्सएमएल विन्यास इस तरह दिखता है के साथ फल वर्ग autowire को पकाना वर्ग की जरूरत:

<bean id="redapple" class="Apple" /> 
<bean id="greenapple" class="Apple" /> 
<bean name="appleCook" class="Cook"> 
      <constructor-arg index="0" value="iron Fruit"/> 
      <constructor-arg index="1" ref="redapple"/> 
</bean> 
<bean name="appleCook2" class="Cook"> 
      <constructor-arg index="0" value="iron Fruit"/> 
      <constructor-arg index="1" ref="greenapple"/> 
</bean> 

कैसे एनोटेशन विन्यास केवल का उपयोग कर इसे प्राप्त करने के लिए? साथ ही

@Component 
public class Apple{ 

} 

फल:

@Component 
public class Fruit { 

    @Autowired 
    public Fruit(
     @Value("iron Fruit") String FruitType, 
     Apple apple 
     ) { 
      this.FruitType = FruitType; 
      this.apple = apple; 
     } 
} 

नोट @Autowired और @Value एनोटेशन के उपयोग

उत्तर

9

एप्पल एक वसंत से प्रबंधित सेम होना चाहिए।

कुक में @Component भी होना चाहिए।

अद्यतन

या आप @Configuration और @Bean एनोटेशन इस्तेमाल कर सकते हैं:

@Configuration 
public class Config { 

    @Bean(name = "redapple") 
    public Apple redApple() { 
     return new Apple(); 
    } 

    @Bean(name = "greeapple") 
    public Apple greenApple() { 
     retturn new Apple(); 
    } 

    @Bean(name = "appleCook") 
    public Cook appleCook() { 
     return new Cook("iron Fruit", redApple()); 
    } 
    ... 
} 
+0

मैं सुधार हुआ है मेरे सवाल का एक सा। यदि मुझे विभिन्न सेब (लाल या हरे सेब) इंजेक्ट करने की आवश्यकता है, तो क्या करना है। एक ही कक्षा के साथ विभिन्न सेम। फ्रूट क्लास कन्स्ट्रक्टर पैरामीटर को लाल या हरे रंग के साथ इंजेक्शन दिया जाना चाहिए – vishnumanohar

+0

@ विष्णुमानोहर ने मेरा उत्तर अपडेट किया। – medvedev1088

+0

क्या होगा यदि ऐप्पल स्प्रिंग-प्रबंधित नहीं है और किसी तृतीय पक्ष लाइब्रेरी से संशोधित नहीं किया जा सकता है? – Claus