स्प्रिंग - बीन स्कोप्स

<B> को परिभाषित करते समय आपके पास उस बीन के लिए एक गुंजाइश घोषित करने का विकल्प होता है। उदाहरण के लिए, स्प्रिंग को हर बार एक नए सेम उदाहरण का उत्पादन करने के लिए मजबूर करने के लिए, आपको बीन की गुंजाइश को घोषित करना चाहिएprototype। इसी तरह, यदि आप चाहते हैं कि वसंत को हर बार एक ही सेम उदाहरण वापस करना चाहिए, तो आपको बीन की गुंजाइश को घोषित करना चाहिएsingleton

स्प्रिंग फ्रेमवर्क निम्नलिखित पाँच स्कैप्स का समर्थन करता है, जिनमें से तीन केवल तभी उपलब्ध होते हैं जब आप किसी वेब-अवेयर एप्लिकेशनकंटेक्स्ट का उपयोग करते हैं।

अनु क्रमांक। स्कोप और विवरण
1

singleton

यह स्प्रिंग आइओसी कंटेनर (डिफ़ॉल्ट) प्रति एकल उदाहरण के लिए बीन की परिभाषा देता है।

2

prototype

यह किसी भी संख्या के ऑब्जेक्ट उदाहरण के लिए एकल बीन परिभाषा को स्कोप करता है।

3

request

यह एक HTTP अनुरोध के लिए एक बीन परिभाषा स्कोप करता है। केवल एक वेब-जागरूक स्प्रिंग एप्लिकेशन कॉन्टेक्स्ट के संदर्भ में मान्य है।

4

session

यह HTTP सत्र में बीन की परिभाषा देता है। केवल एक वेब-जागरूक स्प्रिंग एप्लिकेशन कॉन्टेक्स्ट के संदर्भ में मान्य है।
5

global-session

यह वैश्विक HTTP सत्र में सेम की परिभाषा देता है। केवल एक वेब-जागरूक स्प्रिंग एप्लिकेशन कॉन्टेक्स्ट के संदर्भ में मान्य है।

इस अध्याय में, हम पहले दो स्कोपों ​​के बारे में चर्चा करेंगे और शेष तीन पर चर्चा की जाएगी जब हम वेब-अवगत स्प्रिंग एप्लाइटेक्स के बारे में चर्चा करेंगे।

सिंगलटन स्कोप

यदि कोई दायरा सिंगलटन पर सेट होता है, तो स्प्रिंग IoC कंटेनर उस बीन परिभाषा द्वारा परिभाषित ऑब्जेक्ट का ठीक एक उदाहरण बनाता है। इस एकल उदाहरण को इस तरह के सिंगलटन बीन्स के एक कैश में संग्रहीत किया जाता है, और बाद के सभी अनुरोधों और संदर्भों के लिए जिसका नाम बीन कैश्ड वस्तु है।

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

<!-- A bean definition with singleton scope -->
<bean id = "..." class = "..." scope = "singleton">
   <!-- collaborators and configuration for this bean go here -->
</bean>

उदाहरण

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

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

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

package com.tutorialspoint;

public class HelloWorld {
   private String message;

   public void setMessage(String message){
      this.message  = message;
   }
   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
}

निम्नलिखित की सामग्री है 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.setMessage("I'm object A");
      objA.getMessage();

      HelloWorld objB = (HelloWorld) context.getBean("helloWorld");
      objB.getMessage();
   }
}

निम्नलिखित विन्यास फाइल है 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">

   <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "singleton">
   </bean>

</beans>

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

Your Message : I'm object A
Your Message : I'm object A

प्रोटोटाइप गुंजाइश

यदि स्कोप प्रोटोटाइप में सेट किया जाता है, तो स्प्रिंग IoC कंटेनर हर बार उस विशिष्ट बीन के लिए एक नए बीन का उदाहरण बनाता है। एक नियम के रूप में, सभी स्टेट-फली बीन्स के लिए प्रोटोटाइप स्कोप और स्टेटलेस बीन्स के लिए सिंगलटन स्कोप का उपयोग करें।

एक प्रोटोटाइप दायरे को परिभाषित करने के लिए, आप इसे सेट कर सकते हैं scope के लिए संपत्ति prototype सेम कॉन्फ़िगरेशन फ़ाइल में, जैसा कि निम्नलिखित कोड स्निपेट में दिखाया गया है -

<!-- A bean definition with prototype scope -->
<bean id = "..." class = "..." scope = "prototype">
   <!-- collaborators and configuration for this bean go here -->
</bean>

उदाहरण

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

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

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

package com.tutorialspoint;

public class HelloWorld {
   private String message;

   public void setMessage(String message){
      this.message  = message;
   }
   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
}

निम्नलिखित की सामग्री है 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.setMessage("I'm object A");
      objA.getMessage();

      HelloWorld objB = (HelloWorld) context.getBean("helloWorld");
      objB.getMessage();
   }
}

निम्नलिखित विन्यास फाइल है 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">

   <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "prototype">
   </bean>

</beans>

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

Your Message : I'm object A
Your Message : null