일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Trino
- helm
- CSV
- aws s3
- Kafka
- Vision
- airflow
- Spring
- tcp
- CVAT
- Python
- jvm
- JavaScript
- OS
- EC2
- AWS
- docker
- grafana
- Packet
- Network
- kubectl
- PostgreSQL
- zookeeper
- MAC address
- kubernetes
- ip
- java
- kubeadm
- Operating System
- log
Archives
- Today
- Total
JUST WRITE
Singleton Registry 본문
이 글은 책 토비의 스피링 3의 1장을 정리한 글입니다.
Singleton Registry
Spring은 특별한 설정을 하지 않으면 Bean을 모두 Singleton으로 생성한다.
그래서 ApplicationContext는 Singleton을 저장하고 관리하는 Singleton Registry이기도 하다.
하지만 Singleton Pattern과는 비슷하지만 구현 방법은 확연히 다르다.
ServerApplication and Singleton
Spring은 Enterprise System을 위해 고안된 기술이다.
대부분 Server 환경에서 높은 트래픽을 처리해야 한다.
Servlet은 Java EE(Enterprise Edition) 기술 중 가장 기본이 되는 Service Class이다.
Servlet은 Multi-Thread 환경에서 Singleton으로 동작한다.
사용자의 요청을 처리하는 담당하는 여러 Thread에서 하나의 Object를 공유해 사용한다.
Singleton 한계
public class ExampleClass {
//Instance
private static ExampleClass instance = new ExampleClass();
//private construct
private ExampleClass() {}
public static ExampleClass getInstance() {
return instance;
}
}
- private 생성자를 갖고 있어 상속 불가능.
- 테스트 어려움 -> Singleton 만드는 방식이 제한적.
- Server 환경에서는 Singleton 보장 어려움.
- ClassLoader 구성, 다수 JVM 설치 같은 요소.
- 전역 상태(Global State)를 만들 수 있어 바람직하지 못함.
- Singleton의 Static Method를 이용해 언제든지 Singletone에 쉽게 접근 가능
Spring Singleton
Spring은 Server환경에서 Sington으로 Service Object 방식으로 사용되는 것을 지지한다.
다만 Java Singleton Pattern이 아닌 Singleton Registry를 이용하여 제공한다.
Singleton Registry를 활용한 Singleton 방식은 아래와 같은 특징을 보여준다.
- Static Method, Private 생성자 사용하는 것이 아닌 일반 Java Class로 가능
- Public 생성자 생성 가능 -> 상속 가능
- Object 생성에 관한 권한을 Singleton Registry에서 처리
[주요용어]
Singleton Pattern
GoF가 소개한 디자인 패턴 중 하나
어떤 Class를 Application 내에서 제한된 인스턴스 개수, 주로 1개만 존재하도록 강제하는 패턴
728x90
반응형
'Programing > Spring' 카테고리의 다른 글
DispatcherSerlvet (0) | 2021.10.15 |
---|---|
MappingJackson2JsonView (0) | 2021.10.09 |
Bean LifeCycle (0) | 2021.09.29 |
Spring Bean Scopes (0) | 2021.09.28 |
Spring Bean (0) | 2021.09.26 |
Comments