स्प्रिंग - इनर बीन्स को इंजेक्ट करना

जैसा कि आप जानते हैं कि जावा आंतरिक कक्षाएं अन्य वर्गों के दायरे में परिभाषित की जाती हैं, इसी तरह, inner beansबीन्स हैं जो एक और सेम के दायरे में परिभाषित किए गए हैं। इस प्रकार, <संपत्ति /> या <निर्माणकर्ता-आर्ग /> तत्वों के अंदर एक <बीन /> तत्व को आंतरिक बीन कहा जाता है और इसे नीचे दिखाया गया है।

<?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 id = "outerBean" class = "...">
      <property name = "target">
         <bean id = "innerBean" class = "..."/>
      </property>
   </bean>

</beans>

उदाहरण

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

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

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

package com.tutorialspoint;

public class TextEditor {
   private SpellChecker spellChecker;
   
   // a setter method to inject the dependency.
   public void setSpellChecker(SpellChecker spellChecker) {
      System.out.println("Inside setSpellChecker." );
      this.spellChecker = spellChecker;
   }
   
   // a getter method to return spellChecker
   public SpellChecker getSpellChecker() {
      return spellChecker;
   }
   public void spellCheck() {
      spellChecker.checkSpelling();
   }
}

निम्नलिखित एक और आश्रित वर्ग फ़ाइल की सामग्री है SpellChecker.java -

package com.tutorialspoint;

public class SpellChecker {
   public SpellChecker(){
      System.out.println("Inside SpellChecker constructor." );
   }
   public void checkSpelling(){
      System.out.println("Inside checkSpelling." );
   }
}

निम्नलिखित की सामग्री है 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");
      TextEditor te = (TextEditor) context.getBean("textEditor");
      te.spellCheck();
   }
}

निम्नलिखित विन्यास फाइल है Beans.xml जिसमें सेटर-आधारित इंजेक्शन के लिए कॉन्फ़िगरेशन है लेकिन उपयोग कर रहा है inner beans -

<?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 textEditor bean using inner bean -->
   <bean id = "textEditor" class = "com.tutorialspoint.TextEditor">
      <property name = "spellChecker">
         <bean id = "spellChecker" class = "com.tutorialspoint.SpellChecker"/>
      </property>
   </bean>

</beans>

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

Inside SpellChecker constructor.
Inside setSpellChecker.
Inside checkSpelling.