Whiteship's Note

Aliasing Beans

Spring/Chapter 3 : 2007.03.07 13:30


이전 글 id와 name 그리고 BeanDeinition 이름에서 bean의 유일한 식별자를 구별해 낼 수 있게 됐습니다. 유일한 식별자 이외 나머지는 모두 별칭(alias)이 됩니다.[각주:1]

다수의 name을 사용해서 별칭을 만들수도 있지만 <alias /> 태그를 사용해서 만들 수도 있습니다. 이 때 주의해야 할 것은 별명을 진짜 대상(유일한 식별자)에다가 붙여야 한다는 것입니다.

즉..bean의 유일한 식별자 즉 BeanDefinition 이름을 alias 태그의 name 속성에 적어 두어야 합니다.

사용자 삽입 이미지

만약에 "이쁘니"라는 별명이 있는 "혜인"이가 있다고 했을 때 즉.. "혜인"이 BeanDefinition 이름이고 "이쁘니"는 alias입니다.
<bean id="혜인" name="이쁘니" class="keesun.lover.Hein" />
또는
<bean name="혜인, 이쁘니" class="keesun.lover.Hein" />
이런 식으로 지정하면 가정한 상황처럼 됩니다.

여기에 또 다시 "효도르", "지름쟁이"라는 별칭을 "이쁘니"에 다가 매겼다고 생각해 봅니다.
<alias name="혜인" alias="효도르" />
<alias name="혜인" alias="지름쟁이" />

그럼 이제.. "효도르"는 혜인이의 별명인가요?? 아니죠? "이쁘니"의 별명이 "효도르"일뿐 혜인이의 별명이 "효도르"는 아닙니다. alias는 추이적인 속성이 없기 때문에 절대로 혜인이는 효도르로 불려지지 않으며 더욱이 "지름쟁이"라는 별명으로 혜인이를 부르려고 해봤자 헛수고 입니다.
    <bean id="혜인" name="이쁘니" class="beanConfiguration.Member"/>
    <alias name="이쁘니" alias="효도르" />
    <alias name="이쁘니" alias="지름쟁이" />

    @Test public void beanAliasing(){
        String[] aliases = bf.getAliases("혜인");
        assertTrue(aliases.length == 1);
        assertTrue(aliases[0].equals("이쁘니"));

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

        assertTrue(bean1.equals(bean2));

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

        assertTrue(alias1.equals(alias2));
    }
테스트는 통과 합니다.

  1. BeanFactory에 있는 String[] getAlias(String name) 메소드를 이용해서 확인할 수 있습니다. [본문으로]

'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




: 1 : ··· : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 :