참조 : 빈(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 이름이 됩니다.

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