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

Henu님의 프로필 이미지
Henu

작성한 질문수

자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌

의존객체 선택

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

해결된 질문

작성

·

196

1

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

@Autowired와 @Resource는

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

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

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

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

답변 2

2

Henu님의 프로필 이미지
Henu
질문자

예를들어 BookRepository Interface를 구현한

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

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

특정 Service에서 

@Autowired

BookRepository bookRepository; // Error

@Autowired

BookRepository myBookRepository; // No Error

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

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

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

2

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

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

인것 같은데요..

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

Henu님의 프로필 이미지
Henu

작성한 질문수

질문하기