반응형
1장 오브젝트와 의존관계
싱글톤 레지스트리와 오브젝트 스코프
**오브젝트의 동일성과 동등성(Java)**
- 동일성은 == 연산자
- 동등성은 equals() 메소드
- 동일성은 결국 하나의 오브젝트만 존재하나 두개의 오브젝트 레퍼런스 변수만 가지고 있는 상태
- 동등성은 두 개의 다른 오브젝트가 메모리상에 존재하지만 로직상의 정의에 따라 오브젝트 정보가 같다고 판단
Singleton Registry(싱글톤 레지스트리)
- 기본적으로 별다른 설정이 없으면 내부에서 생성하는 빈 오브젝트를 모두 싱글톤으로 만듦
서버 애플리케이션과 싱글톤
- 스프링은 하나의 요청을 처리하기 위해 계층형 구조로 이루어짐
- 서비스 오브젝트 개념 도입
- 싱글톤 패턴(Singleton Pattern)
- 어떤 클래스를 애플리케이션 내에서 제한된 인스턴스 개수, 이름처럼 주로 하나만 존재하도록 강제하는 패턴
싱글톤 패턴의 한계
- private 생성자를 갖고 있기 때문에 상속할 수 없음
- 싱글톤은 테스트가 힘듦
- 서버환경에서는 싱글톤이 하나만 만들어지는 것을 보장하지 못함
- 싱글톤의 사용은 전역 상태를 만들 수 있기 때문에 바람직하지 못함
싱글톤 레지스트리
- 스프링 컨테이너는 싱글톤을 생성하고, 관리하고, 공급하는 싱글톤 관리 컨테이너
- private 생성자 불필요
- 상속 가능
- 평범한 자바 클래스로 싱글톤을 만듦으로 테스트 용이
- 애플리케이션 컨텍스트 내에서 하나만 만들어지는 것이 보장됨
- 싱글톤은 전역상태이므로 bean에 상태값을 갖지 않도록 유의
싱글톤과 오브젝트의 상태
- 싱글톤이 멀티스레드 환경에서 서비스 형태의 오브젝트로 사용되는 경우 stateless(무상태) 방식으로 만들어져야 함
- 무상태 방식에서 각 요청에 대한 정보나, DB, 서버 리소스로부터 생성한 정보를 다루는 방법
- 파라미터
- 메서드 안 생성되는 로컬 변수
- 리턴값
스프링 빈의 스코프
- 빈의 스코프(scope): 빈이 생성되고, 존재하고, 적용되는 범위
- 스코프 종류
prototype
: 컨테이너에 빈을 요청할 때마다 매번 새로운 오브젝트를 만들어줌request
: 웹을 통해 새로운 HTTP 요청이 생길 때마다 생성session
: 웹의 세션과 스코프가 유사
반응형
'개인 공부 > 토비의 스프링 3.1' 카테고리의 다른 글
[토비의 스프링] 1.8 XML을 이용한 설정 (0) | 2021.07.25 |
---|---|
[토비의 스프링] 1.7 의존관계 주입(DI) (0) | 2021.07.24 |
[토비의 스프링] 1.5 스프링의 IoC (0) | 2021.07.20 |
[토비의 스프링] 1.4 제어의 역전(IoC) (0) | 2021.07.19 |
[토비의 스프링] 1.3 DAO의 확장 (0) | 2021.07.18 |