Весна - Бобовые области

При определении <bean> у вас есть возможность объявить область для этого bean-компонента. Например, чтобы заставить Spring создавать новый экземпляр bean-компонента каждый раз, когда он необходим, вы должны объявить атрибут области bean-компонента равнымprototype. Точно так же, если вы хотите, чтобы Spring возвращал один и тот же экземпляр компонента каждый раз, когда он нужен, вы должны объявить атрибут области действия компонента какsingleton.

Spring Framework поддерживает следующие пять областей, три из которых доступны только в том случае, если вы используете ApplicationContext, поддерживающий веб.

Sr. No. Объем и описание
1

singleton

Это ограничивает определение компонента одним экземпляром для каждого контейнера Spring IoC (по умолчанию).

2

prototype

Это ограничивает одно определение bean-компонента любым количеством экземпляров объекта.

3

request

Это ограничивает определение компонента HTTP-запросом. Допустимо только в контексте Spring ApplicationContext, поддерживающего веб-интерфейс.

4

session

Это ограничивает определение bean-компонента сеансом HTTP. Допустимо только в контексте Spring ApplicationContext, поддерживающего веб-интерфейс.
5

global-session

Это ограничивает определение bean-компонента глобальным сеансом HTTP. Допустимо только в контексте Spring ApplicationContext, поддерживающего веб-интерфейс.

В этой главе мы обсудим первые две области действия, а остальные три будут обсуждены, когда мы обсудим Spring ApplicationContext, поддерживающий веб.

Одноэлементный объем

Если для области задано значение singleton, контейнер Spring IoC создает ровно один экземпляр объекта, определенного этим определением bean-компонента. Этот единственный экземпляр хранится в кэше таких одноэлементных bean-компонентов, и все последующие запросы и ссылки для этого именованного bean-компонента возвращают кэшированный объект.

Область по умолчанию всегда одноэлементная. Однако, когда вам нужен один и только один экземпляр компонента, вы можете установитьscope собственность singleton в файле конфигурации bean-компонента, как показано в следующем фрагменте кода -

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

пример

Разрешите нам иметь рабочую среду IDE Eclipse и предпринять следующие шаги для создания приложения Spring:

Шаги Описание
1 Создайте проект с именем SpringExample и создайте пакет com.tutorialspoint подsrc папку в созданном проекте.
2 Добавьте необходимые библиотеки Spring с помощью опции « Добавить внешние JAR», как описано в главе « Пример Spring Hello World» .
3 Создайте классы Java HelloWorld и MainApp в пакете com.tutorialspoint .
4 Создайте файл конфигурации Beans Beans.xml подsrc папка.
5 Последним шагом является создание содержимого всех файлов Java и файла конфигурации компонента и запуск приложения, как описано ниже.

Вот содержание 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>

Когда вы закончите создание исходного файла и файла конфигурации bean-компонента, позвольте нам запустить приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение -

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

Объем прототипа

Если для области задано значение prototype, контейнер Spring IoC создает новый экземпляр объекта bean-компонента каждый раз, когда делается запрос для этого конкретного bean-компонента. Как правило, используйте область прототипа для всех bean-компонентов с полным состоянием и одноэлементную область для bean-компонентов без состояния.

Чтобы определить область действия прототипа, вы можете установить scope собственность prototype в файле конфигурации bean-компонента, как показано в следующем фрагменте кода -

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

пример

Разрешите нам иметь рабочую среду Eclipse IDE и выполнить следующие шаги, чтобы создать приложение Spring:

Шаги Описание
1 Создайте проект с именем SpringExample и создайте пакет com.tutorialspoint подsrc папку в созданном проекте.
2 Добавьте необходимые библиотеки Spring с помощью опции « Добавить внешние JAR», как описано в главе « Пример Spring Hello World» .
3 Создайте классы Java HelloWorld и MainApp в пакете com.tutorialspoint .
4 Создайте файл конфигурации Beans Beans.xml подsrc папка.
5 Последним шагом является создание содержимого всех файлов Java и файла конфигурации компонента и запуск приложения, как описано ниже.

Вот содержание 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>

Когда вы закончите создание исходного файла и файла конфигурации bean-компонента, позвольте нам запустить приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение -

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