Whiteship's Note

'BeanDefinition 이름'에 해당되는 글 1건

  1. 2007.03.06 id, name and BeanDefinitionName

id, name and BeanDefinitionName

Spring/Chapter 3 : 2007. 3. 6. 13:50


참조 : 빈(bean)의 이름 지정

bean의 식별자를 지정하는 방법은 두 가지
가 있습니다.
1. bean 태그에 id 속성에 값을 지정할 수 있습니다.
=> id 속성에는 하나의 값만 쓸 수 있습니다. 빈 공간(스페이스)이나 콤마(,) 세미콜론(;)등을 사용할 수 없습니다.
2. bean 태그에 name 속성에 값을 지정할 수 있습니다.
=> 여러개의 값을 지정할 수 있습니다. 빈 공간, 콤마, 세미콜론 등으로 구분 할 수 있습니다.
사용자 삽입 이미지

그리고 BeanDefinition 이름은 bean마다 하나씩 가지게 됩니다. 그리고 BeanDefinition 이름은 나중에 aliasing을 할 때 알아 둬야 하기 때문에 어떤 식별자가 BeanDefinition 이름이 되는지 알아둘 필요가 있습니다.
1. id와 name 모두 없는 경우
<bean class="beanConfiguration.Member" />

    @Test public void beanDefinitionName(){
        ListableBeanFactory lbf = (ListableBeanFactory)bf;
        List<String> names = new ArrayList<String>();
        for(String name : lbf.getBeanDefinitionNames())
            names.add(name);
        assertTrue(names.size() == 1);
        assertTrue(names.get(0).equals("beanConfiguration.Member"));
    }
=> inner bean을 사용할 때 id와 name을 모두 명시 하지 않을 수 있으며 이때 BeanDefinition 이름을 찍어보면 default로 패키지 경로가 붙은 클래스 이름으로 지정 된 것을 확인할 수 있습니다.

2. id만 있는 경우
<bean id="member" class="beanConfiguration.Member" />

    @Test public void beanDefinitionName(){
        ListableBeanFactory lbf = (ListableBeanFactory)bf;
        List<String> names = new ArrayList<String>();
        for(String name : lbf.getBeanDefinitionNames())
            names.add(name);
        assertTrue(names.size() == 1);
        assertTrue(names.get(0).equals("member"));
    }
=> id에 지정한 이름이 BeanDefinition 이름이 됩니다.

3. name만 있는 경우(name의 값으로 하나 만 있는 경우)
<bean name="member" class="beanConfiguration.Member" />

테스트는 2번과 동일하며 통과 합니다.
=> name에 지정한 이름이 BeanDefinition 이름이 됩니다.

4. name만 있는 경우(name에 값이 여러 개인 경우)
<bean name="member, member1, member2" class="beanConfiguration.Member" />

테스트는 역시 2번과 동일하며 통과 합니다.
=> name에 지정한 이름들 중에서 가장 앞에 있는 값이 BeanDefition 이름이 됩니다.

5. id와 name이 모두 있는 경우
<bean id="member" name="member1, member2" class="beanConfiguration.Member" />

테스트는 역시 2번과 동일하며 통과 합니다.
=> id에 지정한 값이 BeanDefinition 이름이 됩니다.

결론은 그림으로 나타내면..
사용자 삽입 이미지

'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

Write a comment.