본문 바로가기

Spring Framework

싱글톤 레지스트리

Spring 싱글톤 레지스트리
Spring IoC Container는 기본적으로 생성한 객체들을 싱글톤으로 관리하는데, 이를 Spring 싱글톤 레지스트리라고 합다. Spring은 기본적으로 하나의 빈(Bean) 정의에 대해 단 하나의 객체 인스턴스만 생성하고, 이를 컨테이너 내에서 공유하여 사용합니다.

싱글톤 패턴은 객체 생성 비용이 큰 경우나 동일한 인스턴스를 여러 곳에서 공유해야 하는 경우에 사용됩니다. Spring 싱글톤 레지스트리는 이러한 패턴을 자동으로 구현하여 빈(Bean)들을 효율적으로 관리합니다.

Spring 싱글톤 레지스트리의 특징은 다음과 같습니다:

1. 기본적인 싱글톤 방식
Spring IoC Container는 기본적으로 모든 빈(Bean)들을 싱글톤으로 관리합니다. 따라서 동일한 빈(Bean) 정의에 대해 한 번만 객체 인스턴스가 생성되며, 이후에는 컨테이너 내에서 해당 객체를 공유하여 사용합니다.

2. 설정을 통한 다른 Scope 지원
Spring은 싱글톤 뿐만 아니라 다른 Scope도 지원합니다. 프로토타입(Prototype), 세션(Session), 요청(Request) 등 다양한 Scope를 설정하여 객체의 생성과 사용 방식을 조절할 수 있습니다.

<bean id="exampleBean" class="com.example.ExampleBean" scope="prototype" />


위의 예시에서는 exampleBean 빈을 프로토타입(Prototype) Scope로 설정했습니다. 

프로토타입 Scope는 요청할 때마다 매번 새로운 객체 인스턴스를 생성합니다.

3. 싱글톤 레지스트리의 단점
싱글톤 패턴은 여러 곳에서 하나의 인스턴스를 공유하므로, 멀티스레드 환경에서 공유 자원에 대한 동기화 문제를 고려해야 합니다. Spring에서는 대부분의 빈(Bean)들이 상태를 갖지 않고 읽기 전용이기 때문에 멀티스레드 환경에서 안전하게 사용할 수 있지만, 상태를 갖는 경우에는 적절한 동기화가 필요합니다.

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

서비스 추상화와 트랜잭션  (0) 2024.04.08
Jdbc Template  (0) 2024.04.08
템플릿 메서드 패턴 & 콜백 패턴  (0) 2024.04.08
junit5 - 단위 테스트 프레임워크  (0) 2024.04.08
IoC, DI, Spring IoC Container  (0) 2024.04.08