ComponentScan - 중복

초보개발·2021년 12월 14일
0

Spring

목록 보기
18/37

중복 등록과 충돌

컴포넌트 스캔에서 똑같은 이름의 빈을 등록하게 될 경우 어떠한 결과가 나올까?
1. 자동 빈 등록 vs. 자동 빈 등록

  • 컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데 이름이 같다면 스프링이 관련 오류를 발생시킨다.
    • ConflictingBeanDefinitionException 예외 발생

2. 수동 빈 등록 vs. 자동 빈 등록(자주 발생함)
이 경우에는 수동 빈 등록이 우선권이 가지게 되는데, 수동으로 등록된 빈이 자동으로 등록된 빈을 오버라이딩 해버린다.

  • 수동 빈 등록시 남는 로그
   Overriding bean definition for bean 'memoryMemberRepository' with a different
  definition: replacing

하지만 최근 스프링 부트에서 수동 빈 등록과 자동 빈 등록이 충돌이 나면 오류가 발생하도록 기본 값을 변경하였다. (스프링 부트인 CoreAppliation을 통해 실행해야 한다.)

  • 스프링 부트 오류 로그
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

오버라이딩을 허용하고 싶다면 resources 폴더에 있는 application.properties에 spring.main.allow-bean-definition-overriding=true을 추가하면 된다.

0개의 댓글