Spring 에서 Bean 은 싱글톤형태로 관리되는 객체를 의미하며 빌드 시 Spring 은 Bean 을 등록하는 과정을 거치게 된다.
프로젝트를 진행하다가 발생한 에러는 아래와 같다.
가려진 부분의 이름을 가진 Bean 을 찾지 못해서 발생한 에러이다.
에러가 발생 내용은 Service 어노테이션을 가진 2개의 클래스는 Maven Profile 별로 Bean 생성을 처리하기 위해서
@Profile 어노테이션을 사용했다.
1개의 Service 는 개발자를 위해 dev 와 local Profile 을 설정했다.
또 하나는 배포 및 운영에서 사용할 Profile 을 적용했다.
하지만 실제로는 "real" Profile 을 가진 Service 클래스를 Bean 클래스에서 사용을 하고 있었으며
Bean 으로 등록이 되지 않으면 찾을 수 없는 Bean 이라고 에러가 발생 했던것이다.
기존에 에러가 발생하지 않았던 이유는 "real" Profile 을 가진 서비스 클래스를 extends 키워드를 사용하여 상속받아
Bean 등록을 했던것이다.
extends 키워드를 지워 상속을 지우게 되면 bean 등록이 되지 않아 찾을 수 없는 Bean 이라고 에러가 발생했다.
Bean 과 상속(extends) 그리고 @Profile 어노테이션에 대해 공부할 수 있게 되는 좋은 에러였다.
Bean 등록 및 사용에 주의하자!