[trouble shooting] org.springframework.beans.factory.support.BeanDefinitionOverrideException

2022. 11. 28. 10:11BACKEND/TROUBLE SHOOTING

 

문제

어디서 터졌는지 모름...

 

해결

application.properties 파일에 아래 코드를 추가한다.

spring.main.allow-bean-definition-overriding=true

 

설명

Spring Boot 2.1.0에는 Spring 5.1.0 Framework가 반영된다. Spring Boot 2.1 이전 버전에서는 Bean의 Overriding이 허용되었으나 Spring 5.1.0 Framework는 컴포넌트 탐색 과정에서 발생하는 오버헤드를 감소시키기 위해 여러가지 정책을 실시했는데 그 중 하나가 생성한 빈을 덮어쓰는 상황을 강제적으로 제한하는 것이다. 그래서 빈 등록에 동일한 이름을 사용한다면 BeanDefinitionOverrideException이 발생한다. 이것은 Spring Boot 설정이 아니고 Spring Framework에서 빈을 등록하는 과정에서 발생하는 것인데 이에 대한 속성을 비활성화할 수 있는 기능을 제공한다.

 

공식문서

Bean Overriding

Bean overriding has been disabled by default to prevent a bean being accidentally overridden. If you are relying on overriding, you will need to set spring.main.allow-bean-definition-overriding to true.

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes

 

GitHub - spring-projects/spring-boot: Spring Boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

 

참고자료

https://java.ihoney.pe.kr/530

 

[2.1] BeanDefinitionOverrideException 예외 발생시

스프링 부트 2.1.0 에는 스프링 5.1.0 프레임워크가 반영되었다.스프링 5.1.0 은 컴포넌트 탐색과정에서 발생하는 오버헤드를 감소시키기 위한 여러가지 정책이 반영되었는데, 그 중에 하나가 생성

java.ihoney.pe.kr