본문 바로가기

SpringBoot

11월 21일 SpringBoot ComponentScan에서 같은 이름의 Bean이 등록된 경우

ComponentScan에서 같은 이름의 Bean이 등록된 경우

이 경우는 크게 2가지 경우로 나뉘는데

첫번째 경우는 

자동적 등록 과 자동적 등록이 실행된 경우

자동적 등록이란 ComponentScan이 Component를 스캔하는 과정에서 Component("Service")와 같이 

이름을 붙여줄수 있는데

 이 이름이 동일한 Component를 감지하면 Bean등록이 되지 않는다.

 

두번째 경우는

수동적 등록 + 자동적 등록의 경우이다

수동적 등록이란 Config에서 @Bean 어노테이션을 명시하여 등록하는걸 의미하는데

@Bean의 수동값과 Component의 이름이 겹치면 수동등록 bean이 자동등록 bean을 오버라이딩 한다

수동등록 bean이 component에서 우선권을 가지게 된다.

 

이는 Boot에서 의도적으로 기획한 부분으로

큰 오류를 초례할수 있어서 막아둔 것이다.

Boot에서 최근 정책으로 수동등록과 자동등록이 겹치면 오류를 일으켜 튕기게 되어있다.

 

이 설정을 세부 설정으로 튕기지않고 bean이 오버라이딩 되게 설정할 수 있다.