본문 바로가기
Spring Framework/study

Spring Bean Scope ?

by bloodFinger 2020. 3. 6.

스프링은 기본적으로 모든 bean을 singleton으로 생성하여 관리한다.

- 구체적으로는 애플리케이션 구동 시 JVM안에서 스프링이 bean마다 하나의 객체 생성 의미

 - 그래소 우리는 스프링을 통해서 bean을 제공받으면 언제나 주입받은 bean은 동일한 객체하는 가정하에서 

개발을 해야 한다.

 

request , session , global session 의 scope는 일반 spring 애플리케이션이 아닌, spring MVC 에서만 사용

 

 

1. Singleton

-싱글톤 bean은 Spring 컨테이너에서 한번 생성된다.

 컨테이너가 사라질때 bean도 제거

-생성된 하나의 인스턴스는 single bean cache에 저장되고, 해당 bean에 대한 요청과 참조가 있으면 캐시된 객체 반환

 즉, 하나만 생성되기 때문에 동일한 것을 참조

-기본적으로 모든 bean은 scope이 명시적으로 적어 주지 않는다면 singleton이다.

<bean id="messageBean" class="sample03.MessageBeanKo" scope="singleton"></bean>

 

2.Prototype 

-prototype bean은 모든 요청에서 새로운 객체를 생서성하는 것을 의미한다.

 즉, prototype bean은 의존성 관계의 bean에 주입 될때 새로운 객체가 생성되어 주입된다.

 정상적으로 garbage collection

<bean id="messageBean" class="sample03.MessageBeanKo" scope="prototype"></bean>

 

참고

 

싱글톤으로 적합한 객체

  •  상태가 없는 공유 객체 
  • 읽기용으로만 상태를 가진 공유 객체: 
  • 공유가 필요한 상태를 지닌 공유 객체: 
  • 쓰기가 가능한 상태를 지니면서도 사용빈도가 매우 높은 객체

비싱글톤으로 적합한 객체

  • 쓰기가 가능한 상태를 지닌 객체
  • 상태가 노출되지 않은 객체 

'Spring Framework > study' 카테고리의 다른 글

DAO 패턴은 왜 그렇게 생겼나?  (0) 2020.03.29
Spring 트랜잭션 처리 @Transactional  (0) 2020.03.07
DI(Dependency Injection) ?  (0) 2019.12.23
IoC Container ?  (0) 2019.12.23
테스트  (0) 2019.12.20