구현 내용은 매우 간단합니다. 첫 번째 빈 인스턴스가 애플리케이션에 주입되기 전에 BeanNameAware.setBeanName()이 호출되므로 sing() 메서드에서는 빈 이름이 사용 가능한지 체크할 필요가 없다는 점을 잊지 말기 바랍니다. app-context-xml.xml에 담겨 있는 구성을 살펴보겠습니다.
예제 4-18 NamedSinger 빈 구성([[bean-name-aware]] app-context-xml.xml)
<beans ...> <bean id="johnMayer" class="com.apress.prospring5.ch4.NamedSinger"/> </beans>
이 설정에서 보듯이 BeanNameAware 인터페이스를 사용하는 데 특별한 구성이 필요하지 않습니다. 다음은 ApplicationContext에서 Singer 인스턴스를 가져와 sing() 메서드를 호출하는 간단한 애플리케이션의 코드입니다.
예제 4-19 NamedSinger 테스트 클래스([[bean-name-aware]] NamedSingerDemo.java)
package com.apress.prospring5.ch4; import org.springframework.context.support.GenericXmlApplicationContext; public class NamedSingerDemo { public static void main(String... args) { GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.load("classpath:spring/app-context-xml.xml"); ctx.refresh(); NamedSinger bean = (NamedSinger) ctx.getBean("johnMayer"); bean.sing(); ctx.close(); } }