이러한 각각의 접근법은 기술적 관점에서 똑같이 유효하지만, 어떤 방식이 애플리케이션에 가장 적합한 선택일까요? 먼저, 클래스 이름을 자동으로 사용하는 방식은 피해야 합니다. 이 방식은 동일한 타입의 여러 빈을 정의할 수 없으므로 유연하지 않으며, 고유한 이름을 정의하는 것이 훨씬 더 낫습니다. 고유한 이름을 지정하면 사용하던 스프링의 동작 방식이 나중에 달라지더라도 애플리케이션은 계속 잘 동작할 것입니다. 스프링이 빈의 이름을 어떻게 지정하는지 보려면 앞의 구성을 사용해서 다음 예제를 실행하십시오.
예제 3-85 BeanNamingTest 클래스([[bean-aliases]] BeanNamingTest.java)
package com.apress.prospring5.ch3.xml; import org.springframework.context.support.GenericXmlApplicationContext; public class BeanNamingTest { public static void main(String... args) { GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.load("classpath:spring/app-context-01.xml"); ctx.refresh(); Map<String, String> beans = ctx.getBeansOfType(String.class); beans.entrySet().stream().forEach(b -> System.out.println(b.getKey())); ctx.close(); } }