• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

강의영상 11분쯤 나오는 내용에 대한 질문입니다.

19.01.30 08:34 작성 조회수 102

1

이전 "의존객체 자동 주입" 강의에서

@Autowired와 @Resource는

객체의 타입으로 접근하느냐, 객체의 이름으로 접근하느냐에 따라 차이가 있었는데요,

위 강의 11분 쯤 나오는 내용에서 @Qualifier를 사용하지 않는 수법으로

"@Autowired만 명시하되 이때 객체의 이름이 동일하면된다."라는 말씀을 하셨는데요.

이렇게되면 @Autowired도 객체의 이름으로 접근하는것과 동일한건가요~?

답변 2

·

답변을 작성해보세요.

2

Henu님의 프로필

Henu

질문자

2020.01.07

예를들어 BookRepository Interface를 구현한

MyBookRepository, YouBookRepository 클래스가 두 개가 존재하고

모두 Bean으로 등록이 되어 있다고 가정한다면

특정 Service에서 

@Autowired

BookRepository bookRepository; // Error

@Autowired

BookRepository myBookRepository; // No Error

의 차이는 '전자'는 동일한 타입의 Bean이 여러 개 등록되어 있기때문에 에러가 발생하는 것이고,

'후자'는 동일한 타입의 Bean이 여러 개 등록되어 있다고 한들 특정 객체를 지시하고 있기에 에러가 발생하지 않는 이유겠군요.

이 또한 스프링 프레임워크에서 제공하는 기능이구요.

2

arsu1992님의 프로필

arsu1992

2019.12.31

객체의 타입은 같고 객체의 이름은 다르다 => 정상

객체의 타입은 다르고 객체의 이름은 같다 => 에러

인것 같은데요..

객체의 이름으로 주입이 된 이유는 동일한 타입의 bean이 여러개 있기 때문에 객체의 이름으로 판단한것 같네요