Spring 의 Bean 이 정의될 경우 정의하는 Bean 의 Scope 에 대해 옵션을 부여할 수 있다.
예를 들어 Prototype Scope 는 해당 Bean 을 사용할 때마다 재정의하게끔 성질을 부여한다.
반면 Bean 을 Spring project 전역에서 단 하나의 객체로 취급하고 접근하고자 할 경우 해당 Bean 의 Scope 는 Singleton 으로 정의되는 것이 옳다.
Spring 프레임워크는 현재 5개의 Scope 를 제공하고 있다.
(1) Singleton : Spring 컨테이너 하나당 한개의 Bean 만이 생성되고 해당 Bean 이 요청될 때마다 모든 객체는 한 객체를 가리킨다.
(2) Prototype : 하나의 Bean 은 사용할 때마다 새로운 객체를 할당하여 사용하게 된다.
(3) Request : HTTP request 가 상주하는 Spring Application Context 내에서만 유효한 객체를 생성하고 재사용한다. (web-aware)
(4) Session : Bean 을 해당 세션이 가진 Application Context에 바인딩한다. (web-aware)
(5) Global session : HTTP 세션 전역에서 같은 Bean 을 사용가능하다. (web-aware)
Spring Bean 들의 Default scope 는 Singleton 이기 때문에 대부분 Bean 을 사용할 경우 @Autowired 를 통해 간편하게 사용이 가능하다.
만약 어플리케이션에 따라 다른 종류의 Scope 가 필요하다면 다음 예시와 같이 설정에서 변경이 가능하다.
보통의 어플리케이션에서는 Singleton 으로 설계하고 사용할 수 있으나 간혹 prototype 등으로 특정할 수 있으니 상황에 따라 유용하게 사용할 수도 있다.
<보다 나은 예시 참조 : https://www.tutorialspoint.com/spring/spring_bean_scopes.htm>
'Server > Spring' 카테고리의 다른 글
Spring 의 FlashMap (0) | 2019.02.15 |
---|---|
Spring 의 Caching 기능 이용하기 (0) | 2018.12.03 |
Spring 의 Bean 들의 Thread safety 에 대한 정리 (0) | 2018.11.21 |
Spring Application Context 에 대한 정리 (0) | 2018.11.01 |
Spring PSA(Portable Service Abstraction)의 개념 (0) | 2018.09.09 |