봄-콩 범위
<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 클래스 HelloWorld 및 MainApp을 만듭니다 . |
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 클래스 HelloWorld 및 MainApp을 만듭니다 . |
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