वसंत - इंजेक्शन संग्रह

आपने देखा है कि कैसे आदिम डेटा प्रकार का उपयोग करके कॉन्फ़िगर किया जाता है value उपयोग करने की विशेषता और वस्तु संदर्भ refआपकी बीन कॉन्फ़िगरेशन फ़ाइल में <संपत्ति> टैग की विशेषता। दोनों मामले एक बीन के लिए एकवचन मान से गुजरते हैं।

अब क्या होगा यदि आप जावा संग्रह प्रकार जैसे सूची, सेट, मानचित्र और गुण जैसे बहुवचन मानों को पास करना चाहते हैं। स्थिति को संभालने के लिए, स्प्रिंग चार प्रकार के संग्रह विन्यास तत्व प्रदान करता है जो इस प्रकार हैं -

अनु क्रमांक तत्व और विवरण
1

<list>

यह डुप्लिकेट को अनुमति देते हुए वायरिंग यानी मानों की सूची इंजेक्ट करने में मदद करता है।

2

<set>

यह मूल्यों का एक सेट वायरिंग में मदद करता है लेकिन बिना किसी डुप्लिकेट के।

3

<map>

इसका उपयोग नाम-मूल्य जोड़े के संग्रह को इंजेक्ट करने के लिए किया जा सकता है जहां नाम और मूल्य किसी भी प्रकार के हो सकते हैं।

4

<props>

इसका उपयोग नाम-मूल्य जोड़े के संग्रह को इंजेक्ट करने के लिए किया जा सकता है जहां नाम और मूल्य दोनों स्ट्रिंग्स हैं।

Java.util.Collection या a के किसी भी कार्यान्वयन को तार करने के लिए आप या तो <सूची> या <सेट> का उपयोग कर सकते हैं array

आप दो स्थितियों में आएंगे (ए) संग्रह के प्रत्यक्ष मूल्यों को पास करना और (बी) संग्रह तत्वों में से एक के रूप में एक सेम के संदर्भ में गुजरना।

उदाहरण

आइए हम एक काम कर रहे ग्रहण आईडीई को जगह दें और स्प्रिंग एप्लिकेशन बनाने के लिए निम्नलिखित कदम उठाएं -

कदम विवरण
1 SpringExample नाम से एक प्रोजेक्ट बनाएँ और के तहत एक पैकेज com.tutorialspoint बनाएँsrc बनाया परियोजना में फ़ोल्डर।
2 स्प्रिंग हैलो वर्ल्ड उदाहरण अध्याय में बताए अनुसार बाहरी जार विकल्प का उपयोग करके आवश्यक स्प्रिंग लाइब्रेरी जोड़ें
3 Com.tutorialspoint पैकेज के तहत Java क्लासेस JavaCollection और MainApp बनाएं ।
4 के तहत बीन्स कॉन्फ़िगरेशन फ़ाइल Beans.xml बनाएँsrc फ़ोल्डर।
5 अंतिम चरण सभी जावा फ़ाइलों और बीन कॉन्फ़िगरेशन फ़ाइल की सामग्री बनाना और नीचे बताए अनुसार एप्लिकेशन चलाना है।

यहाँ की सामग्री है JavaCollection.java फ़ाइल -

package com.tutorialspoint;
import java.util.*;

public class JavaCollection {
   List addressList;
   Set  addressSet;
   Map  addressMap;
   Properties addressProp;

   // a setter method to set List
   public void setAddressList(List addressList) {
      this.addressList = addressList;
   }
   
   // prints and returns all the elements of the list.
   public List getAddressList() {
      System.out.println("List Elements :"  + addressList);
      return addressList;
   }
   
   // a setter method to set Set
   public void setAddressSet(Set addressSet) {
      this.addressSet = addressSet;
   }
   
   // prints and returns all the elements of the Set.
   public Set getAddressSet() {
      System.out.println("Set Elements :"  + addressSet);
      return addressSet;
   }
   
   // a setter method to set Map
   public void setAddressMap(Map addressMap) {
      this.addressMap = addressMap;
   }
   
   // prints and returns all the elements of the Map.
   public Map getAddressMap() {
      System.out.println("Map Elements :"  + addressMap);
      return addressMap;
   }
   
   // a setter method to set Property
   public void setAddressProp(Properties addressProp) {
      this.addressProp = addressProp;
   }
   
   // prints and returns all the elements of the Property.
   public Properties getAddressProp() {
      System.out.println("Property Elements :"  + addressProp);
      return addressProp;
   }
}

निम्नलिखित की सामग्री है MainApp.java फ़ाइल -

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
      JavaCollection jc=(JavaCollection)context.getBean("javaCollection");

      jc.getAddressList();
      jc.getAddressSet();
      jc.getAddressMap();
      jc.getAddressProp();
   }
}

निम्नलिखित विन्यास फाइल है Beans.xml जिसमें सभी प्रकार के संग्रह के लिए विन्यास है -

<?xml version = "1.0" encoding = "UTF-8"?>

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <!-- Definition for javaCollection -->
   <bean id = "javaCollection" class = "com.tutorialspoint.JavaCollection">
      
      <!-- results in a setAddressList(java.util.List) call -->
      <property name = "addressList">
         <list>
            <value>INDIA</value>
            <value>Pakistan</value>
            <value>USA</value>
            <value>USA</value>
         </list>
      </property>

      <!-- results in a setAddressSet(java.util.Set) call -->
      <property name = "addressSet">
         <set>
            <value>INDIA</value>
            <value>Pakistan</value>
            <value>USA</value>
            <value>USA</value>
         </set>
      </property>

      <!-- results in a setAddressMap(java.util.Map) call -->
      <property name = "addressMap">
         <map>
            <entry key = "1" value = "INDIA"/>
            <entry key = "2" value = "Pakistan"/>
            <entry key = "3" value = "USA"/>
            <entry key = "4" value = "USA"/>
         </map>
      </property>
      
      <!-- results in a setAddressProp(java.util.Properties) call -->
      <property name = "addressProp">
         <props>
            <prop key = "one">INDIA</prop>
            <prop key = "one">INDIA</prop>
            <prop key = "two">Pakistan</prop>
            <prop key = "three">USA</prop>
            <prop key = "four">USA</prop>
         </props>
      </property>
   </bean>

</beans>

एक बार जब आप स्रोत और बीन कॉन्फ़िगरेशन फ़ाइलों का निर्माण कर लेते हैं, तो हम एप्लिकेशन चलाते हैं। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा -

List Elements :[INDIA, Pakistan, USA, USA] 
Set Elements :[INDIA, Pakistan, USA] 
ap Elements :{1 = INDIA, 2 = Pakistan, 3 = USA, 4 = USA} 
Property Elements :{two = Pakistan, one = INDIA, three = USA, four = USA}

बीन सन्दर्भों का इंजेक्शन

निम्नलिखित बीन परिभाषा आपको यह समझने में मदद करेगी कि संग्रह के तत्व में से एक के रूप में बीन संदर्भ को कैसे इंजेक्ट किया जाए। यहां तक ​​कि आप निम्नलिखित कोड स्निपेट में दिखाए गए संदर्भ और मूल्यों को एक साथ मिला सकते हैं -

<?xml version = "1.0" encoding = "UTF-8"?>

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <!-- Bean Definition to handle references and values -->
   <bean id = "..." class = "...">

      <!-- Passing bean reference  for java.util.List -->
      <property name = "addressList">
         <list>
            <ref bean = "address1"/>
            <ref bean = "address2"/>
            <value>Pakistan</value>
         </list>
      </property>
      
      <!-- Passing bean reference  for java.util.Set -->
      <property name = "addressSet">
         <set>
            <ref bean = "address1"/>
            <ref bean = "address2"/>
            <value>Pakistan</value>
         </set>
      </property>
      
      <!-- Passing bean reference  for java.util.Map -->
      <property name = "addressMap">
         <map>
            <entry key = "one" value = "INDIA"/>
            <entry key = "two" value-ref = "address1"/>
            <entry key = "three" value-ref = "address2"/>
         </map>
      </property>
   </bean>

</beans>

उपरोक्त बीन परिभाषा का उपयोग करने के लिए, आपको अपनी सेटर विधियों को इस तरह से परिभाषित करने की आवश्यकता है कि वे संदर्भों को भी संभालने में सक्षम हों।

अशक्त और रिक्त स्ट्रिंग मानों को इंजेक्ट करना

यदि आपको मूल्य के रूप में एक खाली स्ट्रिंग पास करने की आवश्यकता है, तो आप इसे निम्नानुसार पारित कर सकते हैं -

<bean id = "..." class = "exampleBean">
   <property name = "email" value = ""/>
</bean>

पूर्ववर्ती उदाहरण जावा कोड के बराबर है: exampleBean.setEmail ("")

यदि आपको NULL मान पास करने की आवश्यकता है, तो आप इसे निम्न प्रकार से पास कर सकते हैं -

<bean id = "..." class = "exampleBean">
   <property name = "email"><null/></property>
</bean>

पूर्ववर्ती उदाहरण जावा कोड के बराबर है: exampleBean.setEmail (अशक्त)