인프런 커뮤니티 질문&답변

모깅님의 프로필 이미지
모깅

작성한 질문수

스프링 핵심 원리 - 기본편

스프링 빈 조회 - 상속 관계

ac.getBeansOfType(Object.class);

해결된 질문

작성

·

252

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

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

[질문 내용]
스프링 컨테이너에 설정 정보를 넣어주고 이를 기반으로 테이블을 만드는 것으로 인지했습니다.

현재 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); 와 같이 설정하였고

obj클래스는 스프링 컨테이너에 설정 정보를 넣어주지 않았는데 컨테이너 안에 왜 obj 빈이 존재하며 getBeansOfType을 할 수 있는 이유가 궁금합니다.

답변 1

0

안녕하세요. 유선목님, 공식 서포터즈 y2gcoder입니다.

자바의 모든 클래스들은 Object의 하위 클래스이기 때문입니다. 클래스가 Object 클래스를 상속하는 것은 자바 언어의 기본 규칙이므로 따로 빈에 대한 설정 정보를 저장하지 않습니다. 자바 기본 규칙에 따르기 때문에 따로 메타 데이터를 입력해주지 않아도 모든 클래스가 Object 클래스를 상속하는 것은 항상 참이고, 그래서 가능한 일이라고 생각합니다.

감사합니다.

모깅님의 프로필 이미지
모깅
질문자

오브젝트 클래스는 스프링 컨테이너를 통해 스프링 빈으로 저장하지 않아도 자동으로 스프링빈으로 저장된다는 의미인가요?

빈으로 저장하는 것은 객체 인스턴스입니다. 본 강의에서 DiscountPolicy 타입으로 빈을 저장했지만 실제로는 구현체 인스턴스들이 저장된 것과 같은 이치라고 생각합니다. 오브젝트 클래스 자체를 저장한 것이 아니라 어떤 객체 인스턴스를 저장했고 그것이 그 객체의 클래스 타입이 Object 클래스를 상속하고 있기 때문에 Object 타입으로 불러올 수 있는 것이 맞습니다. Object 타입으로 불러온 빈 객체들의 실제 타입들을 보시면 아실 수 있습니다 :)

모깅님의 프로필 이미지
모깅
질문자

아 이해했습니다. 감사합니다.

파이팅입니다!

모깅님의 프로필 이미지
모깅

작성한 질문수

질문하기