Whiteship's Note

Collection Merging

Spring/Chapter 3 : 2007.03.09 10:48


<list /> <set /> <map /> <props />는 parent bean - child bean의 관계에 있을 때 merge가 가능합니다. merge를 하고 싶을 때는 위 태그들의 속성 중에 merge 속성에 "true" 값을 주면 됩니다.

    <bean id="keesun3" class="beanConfiguration.Member">
        <property name="wishList">
            <list>
                <value>NDS</value>
                <value>Wii</value>
                <value>WOW</value>
            </list>
        </property>
    </bean>

    <bean id="keesun4" parent="keesun3" class="beanConfiguration.Member">
        <property name="wishList" >
            <list merge="true">
                <value>MacBook</value>
                <value>WOW</value>
            </list>
        </property>
    </bean>

keesun3 이 keesun4 의 parent bean인 상태에서 <list /> merge 속성을 true를 지정했기 때문에 아래의 테스트가 통과 합니다.

    @Test public void listMerging(){
        Member keesun = (Member) bf.getBean("keesun4");
        List<String> wishList = keesun.getWishList();
        assertEquals(5, wishList.size());
        assertEquals("NDS", wishList.get(0));
        assertEquals("Wii", wishList.get(1));
        assertEquals("WOW", wishList.get(2));
        assertEquals("MacBook", wishList.get(3));
        assertEquals("WOW", wishList.get(4));
    }

chile bean의 콜렉션에 같은 요소가 있을 경우 <list /> 와는 다르게 <set /> <map /> <props /> 는 child bean의 콜렉션이 parent bean에 있는 collection을 overriding 합니다.


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

The IoC container  (0) 2007.03.10
3.5. Customizing the nature of a bean  (0) 2007.03.10
Singleton & Prototype  (0) 2007.03.09
3.4. Bean scopes  (0) 2007.03.09
Autowiring  (0) 2007.03.09
Collection Merging  (0) 2007.03.09
Collections - <list />  (0) 2007.03.08
Inner beans  (0) 2007.03.08
idref 엘리먼트  (0) 2007.03.08
Constructor Injection 할 때 인자 구분  (0) 2007.03.08
Setter Injection & Constructor Injection  (0) 2007.03.08
top