İlkbahar - Fasulye Kapsülleri

Bir <bean> tanımlarken, o fasulye için bir kapsam bildirme seçeneğiniz vardır. Örneğin, Spring'i her ihtiyaç duyulduğunda yeni bir fasulye örneği oluşturmaya zorlamak için, bean'in kapsam özniteliğini şöyle beyan etmelisiniz:prototype. Benzer şekilde, Spring'in her ihtiyaç duyulduğunda aynı bean örneğini döndürmesini istiyorsanız, bean'ın kapsam özniteliğini olarak beyan etmelisiniz.singleton.

Spring Framework, aşağıdaki beş kapsamı destekler; bunlardan üçü yalnızca web uyumlu bir ApplicationContext kullanıyorsanız kullanılabilir.

Sr.No. Kapsam ve Açıklama
1

singleton

Bu, fasulye tanımını Spring IoC kabı başına tek bir örneğe kapsamaktadır (varsayılan).

2

prototype

Bu, herhangi bir sayıda nesne örneğine sahip olmak için tek bir fasulye tanımını kapsar.

3

request

Bu, bir HTTP isteğine bir fasulye tanımını kapsar. Yalnızca web'e duyarlı bir Spring ApplicationContext bağlamında geçerlidir.

4

session

Bu, bir HTTP oturumunun bean tanımını kapsar. Yalnızca web'e duyarlı bir Spring ApplicationContext bağlamında geçerlidir.
5

global-session

Bu, genel bir HTTP oturumu için bir bean tanımını kapsar. Yalnızca web'e duyarlı bir Spring ApplicationContext bağlamında geçerlidir.

Bu bölümde, ilk iki kapsam hakkında tartışacağız ve kalan üçü, web'e duyarlı Spring ApplicationContext hakkında tartıştığımızda tartışılacaktır.

Singleton kapsamı

Bir kapsam singleton olarak ayarlanmışsa, Spring IoC konteyneri bu fasulye tanımıyla tanımlanan nesnenin tam olarak bir örneğini oluşturur. Bu tek örnek, bu tür tekli çekirdeklerin bir önbelleğinde saklanır ve bu adlandırılmış fasulye için tüm sonraki istekler ve başvurular, önbelleğe alınan nesneyi döndürür.

Varsayılan kapsam her zaman tekildir. Ancak, bir fasulyenin yalnızca bir örneğine ihtiyacınız olduğunda,scope mülkiyet singleton fasulye yapılandırma dosyasında, aşağıdaki kod parçacığında gösterildiği gibi -

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

Misal

Çalışan bir Eclipse IDE'ye sahip olalım ve bir Spring uygulaması oluşturmak için aşağıdaki adımları atalım -

Adımlar Açıklama
1 SpringExample adıyla bir proje oluşturun ve altında bir com.tutorialspoint paketi oluşturun .src oluşturulan projedeki klasör.
2 Bahar Merhaba Dünya Örneği bölümünde açıklandığı gibi Harici JAR Ekle seçeneğini kullanarak gerekli Bahar kitaplıklarını ekleyin .
3 Com.tutorialspoint paketi altında HelloWorld ve MainApp Java sınıfları oluşturun .
4 Beans yapılandırma dosyasını Beans.xml altında oluşturun.src Klasör.
5 Son adım, tüm Java dosyalarının ve Bean Yapılandırma dosyasının içeriğini oluşturmak ve aşağıda açıklandığı gibi uygulamayı çalıştırmaktır.

İşte içeriği HelloWorld.java dosya -

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);
   }
}

Aşağıdakilerin içeriği MainApp.java dosya -

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();
   }
}

Yapılandırma dosyası aşağıdadır Beans.xml singleton kapsamı için gerekli -

<?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>

Kaynak ve bean yapılandırma dosyalarını oluşturmayı tamamladığınızda uygulamayı çalıştırmamıza izin verin. Uygulamanızda her şey yolundaysa, aşağıdaki mesajı yazdıracaktır -

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

Prototip kapsamı

Kapsam prototipe ayarlanmışsa, Spring IoC konteyneri o belirli fasulye için her talep yapıldığında nesnenin yeni bir fasulye örneğini oluşturur. Kural olarak, tüm devlet-dolu çekirdekler için prototip kapsamını ve devletsiz çekirdekler için tekli kapsamı kullanın.

Bir prototip kapsamı tanımlamak için, scope mülkiyet prototype fasulye yapılandırma dosyasında, aşağıdaki kod parçacığında gösterildiği gibi -

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

Misal

Eclipse IDE'yi yerinde çalıştıralım ve bir Spring uygulaması oluşturmak için aşağıdaki adımları takip edelim -

Adımlar Açıklama
1 SpringExample adıyla bir proje oluşturun ve altında bir com.tutorialspoint paketi oluşturun .src oluşturulan projedeki klasör.
2 Bahar Merhaba Dünya Örneği bölümünde açıklandığı gibi Harici JAR Ekle seçeneğini kullanarak gerekli Bahar kitaplıklarını ekleyin .
3 Com.tutorialspoint paketi altında HelloWorld ve MainApp Java sınıfları oluşturun .
4 Beans yapılandırma dosyasını Beans.xml altında oluşturun.src Klasör.
5 Son adım, tüm Java dosyalarının ve Bean Yapılandırma dosyasının içeriğini oluşturmak ve aşağıda açıklandığı gibi uygulamayı çalıştırmaktır.

İşte içeriği HelloWorld.java dosya

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);
   }
}

Aşağıdakilerin içeriği MainApp.java dosya -

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();
   }
}

Yapılandırma dosyası aşağıdadır Beans.xml prototip kapsamı için gerekli -

<?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>

Kaynak ve bean yapılandırma dosyalarını oluşturmayı tamamladığınızda uygulamayı çalıştırmamıza izin verin. Uygulamanızda her şey yolundaysa, aşağıdaki mesajı yazdıracaktır -

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