더북(TheBook)

이 예제는 다음과 같은 결과를 출력합니다. sing()을 호출하는 빈의 이름이 로그 메시지에 포함된 것을 확인할 수 있습니다.

Singer [johnMayer] - sing()

 

BeanNameAware 인터페이스의 사용법은 매우 간단하며 이를 사용해 로그 메시지를 개선하는 것은 바람직한 일입니다. 하지만 빈 이름에 접근할 수 있다고 해서 빈 이름에 비즈니스적인 의미를 부여하려는 생각을 해서는 안 됩니다. 빈 이름에 비즈니스적인 의미를 부여하면 아주 작은 이점밖에 얻지 못하면서도 클래스는 스프링과 결합되어 버립니다. 빈에 내부적으로 사용할 이름을 부여해야 한다면, 애플리케이션 내에 setName() 메서드를 가진 Nameable과 같은 인터페이스를 만들고 이 인터페이스를 빈에서 구현한 후에 빈 이름을 의존성 주입으로 전달합니다. 이렇게 하면 구성에 사용하는 빈 이름은 별도로 관리하면서 비즈니스적인 의미를 갖고 있는 빈 이름을 부여하려고 구성을 불필요하게 수정하지 않아도 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.