본문 바로가기

IT 관련 기타/에러 모음

org.springframework.beans.factory.support.BeanDefinitionOverrideException 에러

SpringBoot로 새로운 프로젝트 환경을 구축하던 중 

org.springframework.beans.factory.support.BeanDefinitionOverrideException 와 같은 에러를 만났다.

일단 해결책 부터 얘기하면

application.properties 파일(혹은 자신이 설정해둔 properties파일)에  


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


와 같이 bean 오버라이딩 가능 설정을 넣어주면 된다.



 나같은 경우에는 위의 에러가 api통신 시 한글이 깨지는 것을 방지하기 위한 인코딩 코드 추가 시 발생 하였는데 기존에는 위와 같은 에러를 만난적이 없었다.

 그래서 뭘 잘못 설정 했는지 찾다보니 기존 프로젝트에서 Spring Boot의 버전을 2.0.3사용하고 있었고 신규 프로젝트에서 2.1.4로 올린게 문제였다. 

 
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.

 Release Note를 확인해보니 Spring Boot  2.1 이전 버전에서 Bean의 Overriding이 허용되던 것이 Bean이 실수로 대체되지 않도록 하기 위해 Bean의 Overriding을 막아버린 것. 

 그래서 위와 같이 Properties에서 overriding을 true 로 명시해 주지 않으면 에러가 발생한다.

간단하게 해결했으니 다행이지만 다음번 버전을 올릴땐 릴리즈 노트를 확인하는 버릇을 가져야 할듯.