Whiteship's Note

'Aliasing Bean'에 해당되는 글 1건

  1. 2007.03.07 복잡한 Alias

복잡한 Alias

Spring/Chapter 3 : 2007.03.07 15:04


사용자 삽입 이미지
    <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이면서 "혜인"과 같은 객체입니다.

'Spring > Chapter 3' 카테고리의 다른 글

idref 엘리먼트  (0) 2007.03.08
Constructor Injection 할 때 인자 구분  (0) 2007.03.08
Setter Injection & Constructor Injection  (0) 2007.03.08
3.3. Dependencies  (0) 2007.03.08
Bean 생성하기  (0) 2007.03.07
복잡한 Alias  (0) 2007.03.07
Aliasing Beans  (0) 2007.03.07
id, name and BeanDefinitionName  (0) 2007.03.06
FileSystemResource vs ClassPathResource  (2) 2007.03.06
3.2. Basics - containers and beans  (0) 2007.03.05
BeanFactory와 ApplicationContext 인터페이스  (0) 2007.03.05
top