강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của yne3251056
yne3251056

câu hỏi đã được viết

Nguyên lý cốt lõi của Spring - Phiên bản cơ bản

Phạm vi Prototype - Giải quyết vấn đề khi dùng chung với Singleton Bean bằng Provider

provider 사용하는 이유

Viết

·

61

·

Đã chỉnh sửa

0


=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
ac.getBean()을 통해 빈을 조회하는 것과 Provider을 사용하는 것의 차이점이 무엇인지 잘 모르겠습니다 ㅠㅠ 둘다 지정한 빈을 컨테이너에서 대신 찾아주는 것 아닌가요? Provider을 사용하는 이유가 궁금합니다!

spring객체지향

Câu trả lời 1

0

yh님의 프로필 이미지
yh
Người chia sẻ kiến thức

안녕하세요. yne325님

매번 새로운 객체가 필요하다고 가정하겠습니다.

싱글톤 빈이 생성될 때 의존성 주입을 받으면서 프로토타입 빈이 딱 한 번 생성되어 주입됩니다.

이후 싱글톤 빈을 계속 사용할 때마다, 안에 있는 프로토타입 빈은 계속 같은 녀석이 사용됩니다. (이미 주입이 끝났으니까요.)

결과: 프로토타입(매번 새로운 객체)의 의도와 다르게 동작합니다.

 

해결책 (Provider 사용)

싱글톤 빈은 프로토타입 빈 자체가 아니라, "프로토타입 빈을 찾아주는 Provider"를 주입받습니다.

provider.getObject()를 호출할 때마다 스프링 컨테이너에 "새로운 거 하나 줘!"라고 요청하게 됩니다 (DL: Dependency Lookup).

결과: 사용할 때마다 항상 새로운 프로토타입 빈이 생성됩니다.

 

핵심은 항상 새로운 객체가 필요할 때, 이런 해결 방안이 필요하다는 것입니다.

감사합니다.

Hình ảnh hồ sơ của yne3251056
yne3251056

câu hỏi đã được viết

Đặt câu hỏi