더북(TheBook)

3.5.5 빈 명명 규칙 이해하기

스프링은 수많은 상황에 유연하게 대처하기 위해 복잡한 빈 명명 규칙(naming) 구조를 지원합니다. 모든 빈은 ApplicationContext 내에서 고유한 하나 이상의 이름을 가져야 합니다. 스프링은 빈 이름을 결정하는 간단한 해석 과정을 수행합니다. <bean> 태그에 id 애트리뷰트의 값을 지정하면 이 값이 이름으로 사용됩니다. id 애트리뷰트에 값이 지정되지 않으면 스프링은 name 애트리뷰트를 찾는데, name 애트리뷰트 값이 정의돼 있다면 그중 첫 번째 이름을 사용합니다(name 애트리뷰트에 이름을 여러 개 정의할 수 있는데 그중에 첫 번째 이름을 의미합니다. 잠시 후에 더 자세히 알아봅니다). idname 애트리뷰트가 모두 지정되지 않으면 스프링은 빈의 클래스 이름을 빈 이름으로 사용합니다. 물론 다른 빈이 동일한 클래스 이름을 사용하지 않아야 합니다. ID나 이름이 없는 같은 타입의 빈이 여러 개 선언되면 스프링은 ApplicationContext를 초기화하는 과정에서 해당 타입의 빈을 주입할 때 예외(org.springframework.beans.factory.NoSuchBeanDefinitionException 타입)를 던집니다. 다음은 세 가지 명명 규칙을 모두 적용한 구성 예제(app-context-01.xml)입니다.

예제 3-84 세 가지 빈 명명 규칙을 설정한 구성 파일([[bean-aliases]] app-context-01.xml)

<beans …>
    <bean id=“string1” class=“java.lang.String”/>
    <bean name=“string2” class=“java.lang.String”/>
    <bean class=“java.lang.String”/>
</beans>

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