@Component("등록될 빈 이름")을 통해 빈의 이름을 직접 설정할 수 있다. (디폴트는 클래스명에서 앞글자만 소문자로 바꾼 이름)
만약 각각 다른 클래스에 똑같은 이름으로 설정해 놓는다면?
ex) 둘 다 service로 이름 설정 됨
@Component("service")
public class MemberServiceImpl implements MemberService {
}
.
.
@Component("service")
public class OrderServiceImpl implements OrderService {
}
-> ConflictingBeanDefinitionException 예외 발생
위처럼 자동vs자동이 아닌 수동vs자동인 경우 수동빈이 우선권을 가진다. 자동빈을 수동빈이 덮어버림
-> 이를 의도하여 사용할 수도 있겠지만 현실은 의도적이기 보다는 실수로 이런 현상을 많이 초래한다. 에러가 나는 상황인데 에러가 나지 않으니 잡기도 어렵다. 그래서 최근 스프링 부트에서 수동 빈 등록과 자동 빈 등록이 충돌하면 오류가 발생하도록 기본값을 변경하였다.
'김영한님 스프링 강의 정리 > 핵심원리 기본편' 카테고리의 다른 글
Lombok 라이브러리를 사용한 생성자 주입 (0) | 2021.01.11 |
---|---|
의존성 주입 @Autowired, 옵션 처리 설정 (0) | 2021.01.11 |
컴포넌트 스캔 - @Component, @Autowired, @Qualifier (0) | 2021.01.09 |
@Configuration과 싱글톤 패턴 (0) | 2021.01.08 |
싱글톤 컨테이너 (0) | 2021.01.08 |