봄-콩 범위

<bean>을 정의 할 때 해당 bean의 범위를 선언하는 옵션이 있습니다. 예를 들어 Spring이 필요할 때마다 새로운 빈 인스턴스를 생성하도록 강제하려면 빈의 범위 속성을 다음과 같이 선언해야합니다.prototype. 마찬가지로 Spring이 필요할 때마다 동일한 빈 인스턴스를 반환하도록하려면 빈의 범위 속성을 다음과 같이 선언해야합니다.singleton.

Spring Framework는 다음 5 개의 범위를 지원하며, 그중 3 개는 웹 인식 ApplicationContext를 사용하는 경우에만 사용할 수 있습니다.

Sr. 아니. 범위 및 설명
1

singleton

이것은 빈 정의의 범위를 Spring IoC 컨테이너 당 단일 인스턴스 (기본값)로 지정합니다.

2

prototype

이것은 임의의 수의 오브젝트 인스턴스를 갖도록 단일 Bean 정의의 범위를 지정합니다.

request

이것은 빈 정의의 범위를 HTTP 요청으로 지정합니다. 웹 인식 Spring ApplicationContext의 컨텍스트에서만 유효합니다.

4

session

이것은 빈 정의의 범위를 HTTP 세션으로 지정합니다. 웹 인식 Spring ApplicationContext의 컨텍스트에서만 유효합니다.
5

global-session

이는 빈 정의의 범위를 전역 HTTP 세션으로 지정합니다. 웹 인식 Spring ApplicationContext의 컨텍스트에서만 유효합니다.

이 장에서는 처음 두 스코프에 대해 논의하고 나머지 세 스코프는 웹 인식 Spring ApplicationContext에 대해 논의 할 때 논의 될 것입니다.

싱글 톤 범위

범위가 싱글 톤으로 설정되면 Spring IoC 컨테이너는 해당 Bean 정의에 의해 정의 된 객체의 정확히 하나의 인스턴스를 생성합니다. 이 단일 인스턴스는 이러한 싱글 톤 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>

작동하는 Eclipse IDE를 준비하고 다음 단계를 수행하여 Spring 애플리케이션을 작성해 보겠습니다.

단계 기술
1 이름이 SpringExample 인 프로젝트를 만들고 아래에 com.tutorialspoint 패키지를 만듭니다 .src 생성 된 프로젝트의 폴더.
2 Spring Hello World 예제 장에 설명 된대로 Add External JARs 옵션을 사용하여 필요한 Spring 라이브러리를 추가 합니다.
com.tutorialspoint 패키지 아래에 Java 클래스 HelloWorldMainApp을 만듭니다 .
4 아래에 Beans 구성 파일 Beans.xml을 만듭니다 .src 폴더.
5 마지막 단계는 모든 Java 파일과 Bean Configuration 파일의 내용을 만들고 아래 설명 된대로 응용 프로그램을 실행하는 것입니다.

내용은 다음과 같습니다. 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

프로토 타입 범위

범위가 프로토 타입으로 설정되면 Spring IoC 컨테이너는 특정 빈에 대한 요청이있을 때마다 객체의 새 빈 인스턴스를 생성합니다. 일반적으로 모든 state-full bean에는 프로토 타입 범위를 사용하고 stateless 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 Hello World 예제 장에 설명 된대로 Add External JARs 옵션을 사용하여 필요한 Spring 라이브러리를 추가 합니다.
com.tutorialspoint 패키지 아래에 Java 클래스 HelloWorldMainApp을 만듭니다 .
4 아래에 Beans 구성 파일 Beans.xml을 만듭니다 .src 폴더.
5 마지막 단계는 모든 Java 파일과 Bean Configuration 파일의 내용을 만들고 아래 설명 된대로 응용 프로그램을 실행하는 것입니다.

내용은 다음과 같습니다. 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