사용자 삽입 이미지    <bean id="혜인" name="이쁘니" class="beanConfiguration.Member"/>

    <alias name="이쁘니" alias="효도르" />
    <alias name="이쁘니" alias="지름쟁이" />

이 전 글에 이어서.. 이 상태에서 왠지 "지름쟁이"와 "효도르"로 얻어낸 bean은  "이쁘니"로 얻어낸 bean과 같을 것 같았는데... 다르네요.

        Member bean1 = (Member) bf.getBean("혜인");
        Member bean2 = (Member) bf.getBean("이쁘니");
        Member alias1 = (Member) bf.getBean("효도르");
        Member alias2 = (Member) bf.getBean("지름쟁이");

        assertFalse(bean2.equals(alias1));
        assertFalse(bean2.equals(alias2));

하지만 getAlias("효도르") 나 getAlias("지름쟁이")를 호출하게 되면 String 배열에는 "이쁘니"가 포함되어 있습니다. -_-;; 오.. 점점 혼란스러워 지는 군요.

"효도르"와 "지름쟁이"는 "이쁘니"의 Alias는 맞는데 "이쁘니"와 같은 객체는 아닙니다.

이렇게.. 복잡한 상황이 발 생할 수 있기 땜시..BeanDefinition 이름으로 alias를 설정해 주어야 합니다.

    <bean id="혜인" name="이쁘니" class="beanConfiguration.Member"/>
    <alias name="혜인" alias="착한 아이" />
    <alias name="혜인" alias="얌전한 아이" />
사용자 삽입 이미지

    @Test public void beanDefinitionNameAliasing(){
        String[] aliases = bf.getAliases("혜인");
        assertTrue(aliases.length == 3);

        Member bean1 = (Member) bf.getBean("혜인");
        Member bean2 = (Member) bf.getBean("이쁘니");
        Member alias1 = (Member) bf.getBean("착한 아이");
        Member alias2 = (Member) bf.getBean("얌전한 아이");

        assertTrue(bean1.equals(bean2));
        assertTrue(bean1.equals(alias1));
        assertTrue(bean1.equals(alias2));
        assertTrue(alias1.equals(alias2));
    }

테스트는통과 합니다. 혜인이는 이쁘니, 착한 아이, 조용한 아이로 불러온 bean과 동일합니다.

String[] getAlias(String name) 이 메소드는 name에 혜인, 이쁘니, 착한 아이, 얌전한 아이를 넣으면 모두 자기 자신을 제외한 alias 3개씩을 가지게 됩니다.

"이쁘니", "착한 아이", "얌전한 아이"는 "혜인"의 alias이면서 "혜인"과 같은 객체입니다.