본문 바로가기

Spring/Spring

(SPRING) 빈의 스코프

컨테이너는 ApplicationContext를 의미한다.

Singleton

Spring 컨테이너당 하나의 빈을 생성하는 것을 의미한다.

자바의 싱글톤과 다른 점은 자바의 싱글톤은 JVM 수준에서 하나의 싱글톤이 존재하지만 스프링의 싱글톤은 스프링 컨테이너 당 하나의 싱글톤이 있다는 것이 다르다.

 

prototype

스프링 컨테이너를 통해 빈을 주입받을 때마다 새로운 인스턴스가 생성됨을 의미한다. (context.getbean("..."))

호출하는 코드가 해당 Bean의 다중 메서드 호출 중 몇몇 개인화된 세션정보를 설정하길 원할 때 사용된다. 이 말은 싱글톤은 특수한 세션 처리를 할 수 없음을 의미한다. 따라서 싱글톤은 stateless 하다고 하고 프로토타입은 stateful 하다고들 한다.

 


@Scope의 사용

@Configuration 클래스의 팩토리 메서드에서 사용되는 경우

여기서 팩토리 메서드는 주로 @Bean을 사용한 메서드를 의미한다.

 

@Component 클래스에서 사용되는 경우

해당 클래스는 만약 @ComponentScan이 정의한 패키지 정보와 @Configuration가 선언되어있다면 해당 패키지 정보에 포함되어있는

@Component 클래스에서 Scope을 지정할 수 있다.

 


Code Link

https://github.com/mike6321/Spring/tree/master/SpringBoot/demoapplicationcontextexercise

 

mike6321/Spring

Contribute to mike6321/Spring development by creating an account on GitHub.

github.com