bean definition을 만들 때 해당 bean definition에 의해 정의된 클래스의 실제 인스턴스를 만들기 위한 레시피를 만드는데, 그 중에 빈이 존재할 수 있는 범위를 의미.
빈 스코프(Bean Scope) 특징
빈 스코프 종류
Scope | Descreption |
---|---|
singleton | (Default) 각 Spring 컨테이너에 대한 단일 객체 인스턴스에 대한 단일 bean definition의 범위를 지정 |
prototype | 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 |
request | 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 |
session | 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 |
application | 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프 |
websocket | 단일 bean definition 범위를 WebSocket의 라이프사이클까지 확장, Spring ApplicationContext의 컨텍스트에서만 유효 |
싱글톤(singleton) 스코프
싱글톤 스코프 특징
간단한 구조 예제
public class SingletonService {
// static 영역에 객체를 딱 1개만 생성
private static final SingletonService instance = new SingletonService();
// 인스턴스가 필요할 시, public static 메서드를 통해서만 조회할 수 있음
public static SingletonService getInstance(){
return instance;
}
// new 키워드로 객체 생성을 제한함
private SingletonService(){}
}
싱글톤 패턴의 문제점
싱글톤 컨테이너 (스프링 컨테이너)
싱글톤 방식의 주의점