• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

DI 매개변수 질문 있습니다.

23.04.18 20:32 작성 조회수 175

0

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

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

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

[질문 내용]
여기에 질문 내용을 남겨주세요.

안녕하세요. 강의를 보는데, 자동 등록 방식에선, 매개변수를 적어두고 직접 빈 등록하는 방식에선, 매개변수를 적어두지 않더라구요.

  1. 자동등록 방식에서(@Component) 매개변수를 지정해놓으면 스프링 컨테이너가 빈에 등록되어 있는 객체를 하나하나 instanceof로 형변환 검사를 하는 방식으로 주입을 시키나요? 보통 자바에서 이런 로직이 많이 있더라구요!

  2. 빈을 등록할 메서드에 매개변수가 있고 없고의 명확한 기준을 잘 모르겠습니다.. 혹시 직접 등록 방식에선 제가 직접 객체를 생성해서 주입하는 문장을 적어야 하기에 불필요한 것일까요??

감사합니다!

답변 1

답변을 작성해보세요.

2

David님의 프로필

David

2023.04.19

안녕하세요. dydghksfe766님, 공식 서포터즈 David입니다.

질문에 언급된 매개변수가 빈 이름을 말씀하고 계신 것이라고 가정하고 답변 드리겠습니다.

  1. 스프링 컨테이너에 빈을 등록할 때 빈의 이름과 함께 빈이 등록됩니다. 또한 빈을 찾아올 때 빈 이름을 먼저 찾게 되는데 이를 위해 별도의 빈 이름을 지정하기도 합니다. 굳이 지정할 필요는 없으며 관례를 따라 첫 글자가 소문자인 클래스명으로 빈 이름이 등록됩니다. 의존관계 주입의 경우, 컴포넌트 스캔시 빈 등록 대상에 대한 타입 정보도 함께 수집되므로 일일이 타입을 instanceof로 검사하진 않습니다.

  2. 빈 이름을 지정하는 것은 하나의 빈을 지정하겠다는 말입니다. 동일한 타입을 가지는 빈이 여러 개 존재한다면 이름을 기반으로 하나를 특정하여 의존관계를 주입받을 수 있습니다.

감사합니다.