1. Scope

2. ProtoType 빈이 싱글톤 빈을 참조하면?

3. 싱글톤 빈이 프로토타입 빈을 참조하면?

1. Scope(Click)

1-1) SingleTon Scope

스프링은 기본적으로 모든 Bean을 Singleton(Click)으로 생성하여 관리함.

애플리케이션 구동시 JVM 안에서 스프링이 Bean마다 하나의 객체를 생성하는 것을 의미함.

스프링을 통해 Bean을 제공받으면 언제나 주입받은 Bean은 동일한 객체라는 가정하에 개발함.

1-1)-1. SingleTon Scope 예시 코드

1-2) ProtoType

1-2)-1. ProtoType 개념

매번 새로운 객체를 만들어서 써야하는 스코프임.

Request, Session, WebSocket ...

1-2)-2. ProtoType 예시 코드

→ 빈을 받아 올 때마다 새로운 객체로 만들어짐.

2. ProtoType 빈(매번 다른 객체가 찍힘)이 싱글톤 빈을 참조하면?

→ 아무 문제 없음.

Untitled

3. 싱글톤 빈(매번 객체가 바뀌지 않음)이 프로토타입 빈(매번 객체가 바뀜)을 참조하면?

→ 싱글톤 타입의 빈을 쓸 때 프로토타입의 빈이 변경되지 않는 게 문제임.

3-1) 오류

3-1)-1. class Single

Untitled

3-1)-2. class Runner

Untitled

3-1)-3. Console

Untitled

3-2) 해결, Prototype을 Proxy로 설정해서 해결하기-1

3-2)-1. class Proto, proxyMode 변경

→ 클래스 기반의 빈으로 proxy로 감싸서 싱글톤 타입의 빈이 프로토타입의 빈을

→ 참조할 수 있도록 만듦.

→ 프로토타입이 매번 바뀔 수 있도록 Proxy로 감싸주는 거임.

Untitled

Untitled

3-2)-2. class Runner

Untitled

3-2)-3. Console

Untitled

3-3) Code로 짜서 -2

Untitled

Untitled