वसंत - बीन परिभाषा वंशानुक्रम
बीन डेफिनिशन में कंस्ट्रक्टर लॉजिक, प्रॉपर्टी वैल्यू, और कंटेनर-विशिष्ट जानकारी जैसे इनिशियलाइज़ेशन मेथड, स्टैटिक फैक्ट्री मेथड नेम, इत्यादि सहित बहुत सारी कॉन्फ़िगरेशन जानकारी हो सकती है।
एक बाल बीन परिभाषा एक मूल परिभाषा से विन्यास डेटा विरासत में मिली है। बच्चे की परिभाषा कुछ मूल्यों को ओवरराइड कर सकती है, या आवश्यकतानुसार दूसरों को जोड़ सकती है।
स्प्रिंग बीन परिभाषा वंशानुक्रम का जावा वर्ग विरासत के साथ कोई लेना-देना नहीं है, लेकिन विरासत की अवधारणा समान है। आप एक पेरेंट बीन परिभाषा को एक टेम्पलेट के रूप में परिभाषित कर सकते हैं और अन्य बच्चे बीन्स पेरेंट बीन से आवश्यक कॉन्फ़िगरेशन प्राप्त कर सकते हैं।
जब आप XML- आधारित कॉन्फ़िगरेशन मेटाडेटा का उपयोग करते हैं, तो आप का उपयोग करके चाइल्ड बीन परिभाषा इंगित करते हैं parent विशेषता, इस विशेषता के मूल्य के रूप में मूल बीन को निर्दिष्ट करना।
उदाहरण
आइए हम एक काम कर रहे ग्रहण आईडीई को जगह दें और स्प्रिंग एप्लिकेशन बनाने के लिए निम्नलिखित कदम उठाएं -
कदम | विवरण |
---|---|
1 | SpringExample नाम से एक प्रोजेक्ट बनाएँ और के तहत एक पैकेज com.tutorialspoint बनाएँsrc बनाया परियोजना में फ़ोल्डर। |
2 | स्प्रिंग हैलो वर्ल्ड उदाहरण अध्याय में बताए अनुसार बाहरी जार विकल्प का उपयोग करके आवश्यक स्प्रिंग लाइब्रेरी जोड़ें । |
3 | Com.tutorialspoint पैकेज के तहत Java कक्षाएं HelloWorld , HelloIndia और MainApp बनाएं । |
4 | के तहत बीन्स कॉन्फ़िगरेशन फ़ाइल Beans.xml बनाएँsrc फ़ोल्डर। |
5 | अंतिम चरण सभी जावा फ़ाइलों और बीन कॉन्फ़िगरेशन फ़ाइल की सामग्री बनाना और नीचे बताए अनुसार एप्लिकेशन चलाना है। |
निम्नलिखित विन्यास फाइल है Beans.xmlजहाँ हमने "helloWorld" बीन को परिभाषित किया है जिसमें दो गुण message1 और message2 हैं । अगला "हेल्लोइंडिया" बीन को "हेल्लोवर्ल्ड" सेम के एक बच्चे के रूप में परिभाषित किया गया हैparentविशेषता। बच्चे सेम inherits message2 संपत्ति के रूप में है, और ओवरराइड message1 संपत्ति और प्रस्तुत किया एक और संपत्ति message3 ।
<?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 = "helloWorld" class = "com.tutorialspoint.HelloWorld">
<property name = "message1" value = "Hello World!"/>
<property name = "message2" value = "Hello Second World!"/>
</bean>
<bean id ="helloIndia" class = "com.tutorialspoint.HelloIndia" parent = "helloWorld">
<property name = "message1" value = "Hello India!"/>
<property name = "message3" value = "Namaste India!"/>
</bean>
</beans>
यहाँ की सामग्री है HelloWorld.java फ़ाइल -
package com.tutorialspoint;
public class HelloWorld {
private String message1;
private String message2;
public void setMessage1(String message){
this.message1 = message;
}
public void setMessage2(String message){
this.message2 = message;
}
public void getMessage1(){
System.out.println("World Message1 : " + message1);
}
public void getMessage2(){
System.out.println("World Message2 : " + message2);
}
}
यहाँ की सामग्री है HelloIndia.java फ़ाइल -
package com.tutorialspoint;
public class HelloIndia {
private String message1;
private String message2;
private String message3;
public void setMessage1(String message){
this.message1 = message;
}
public void setMessage2(String message){
this.message2 = message;
}
public void setMessage3(String message){
this.message3 = message;
}
public void getMessage1(){
System.out.println("India Message1 : " + message1);
}
public void getMessage2(){
System.out.println("India Message2 : " + message2);
}
public void getMessage3(){
System.out.println("India Message3 : " + message3);
}
}
निम्नलिखित की सामग्री है 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");
HelloWorld objA = (HelloWorld) context.getBean("helloWorld");
objA.getMessage1();
objA.getMessage2();
HelloIndia objB = (HelloIndia) context.getBean("helloIndia");
objB.getMessage1();
objB.getMessage2();
objB.getMessage3();
}
}
एक बार जब आप स्रोत और बीन कॉन्फ़िगरेशन फ़ाइलों का निर्माण कर लेते हैं, तो हम एप्लिकेशन चलाते हैं। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा -
World Message1 : Hello World!
World Message2 : Hello Second World!
India Message1 : Hello India!
India Message2 : Hello Second World!
India Message3 : Namaste India!
यदि आपने यहां देखा, तो हमने "helloIndia" बीन बनाते समय मैसेज 2 पास नहीं किया, लेकिन यह बीन डेफिनिशन इनहेरिटेंस के कारण पास हो गया।
बीन परिभाषा टेम्पलेट
आप एक बीन डेफिनिशन टेम्प्लेट बना सकते हैं, जिसका उपयोग अन्य बाल बीन परिभाषाओं द्वारा बहुत प्रयास किए बिना किया जा सकता है। बीन डेफिनिशन टेम्पलेट को परिभाषित करते समय, आपको निर्दिष्ट नहीं करना चाहिएclass विशेषता और निर्दिष्ट करना चाहिए abstract विशेषता और अमूर्त विशेषता को एक मान के साथ निर्दिष्ट करना चाहिए true जैसा कि निम्नलिखित कोड स्निपेट में दिखाया गया है -
<?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 = "beanTeamplate" abstract = "true">
<property name = "message1" value = "Hello World!"/>
<property name = "message2" value = "Hello Second World!"/>
<property name = "message3" value = "Namaste India!"/>
</bean>
<bean id = "helloIndia" class = "com.tutorialspoint.HelloIndia" parent = "beanTeamplate">
<property name = "message1" value = "Hello India!"/>
<property name = "message3" value = "Namaste India!"/>
</bean>
</beans>
माता-पिता बीन को अपने दम पर तुरंत नहीं दे सकते क्योंकि यह अधूरा है, और इसे स्पष्ट रूप से सार के रूप में भी चिह्नित किया गया है । जब एक परिभाषा इस तरह से अमूर्त होती है, तो यह केवल एक शुद्ध टेम्पलेट बीन परिभाषा के रूप में उपयोग करने योग्य होती है जो कि बच्चे की परिभाषा के लिए मूल परिभाषा के रूप में कार्य करती है।