Whiteship's Note

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

  1. 2007.03.09 Singleton & Prototype

Singleton & Prototype

Spring/Chapter 3 : 2007.03.09 15:07


<bean /> 엘리먼트의 scope 속성을 사용하여 bean의 scope을 지정해 줄 수 있습니다. default 값은 singleton입니다.
사용자 삽입 이미지

    <bean id="email2" class="beanConfiguration.Email" />

    <bean id="keesun6" class="beanConfiguration.Member">
        <property name="email" ref="email2" />
    </bean>

    <bean id="keesun7" class="beanConfiguration.Member">
        <property name="email" ref="email2" />
    </bean>

위와 같이 설정 해뒀다면 keesun6과 keesun7 이라는 Member bean은 같은 email 객체를 가지게 됩니다. 그래서 아래 처럼 원하지 않는 일이 발생할 수 있습니다.

@Test public void singletonScope(){
        Member keesun6 = getMember("keesun6");
        Member keesun7 = getMember("keesun7");
        Email email6 = keesun6.getEmail();
        Email email7 = keesun7.getEmail();
        assertEquals(email6, email7);
        String emailAddress = "hi@email.com";
        email6.setAddress(emailAddress);
        assertEquals(emailAddress, email7.getAddress());
    }

email2 bean의 scope을 prototype으로 지정해 줍니다.
사용자 삽입 이미지

    <!-- prototype -->
    <bean id="email3" class="beanConfiguration.Email" scope="prototype"/>

    <bean id="keesun8" class="beanConfiguration.Member">
        <property name="email" ref="email3" />
    </bean>

    <bean id="keesun9" class="beanConfiguration.Member">
        <property name="email" ref="email3" />
    </bean>

다음의 테스트를 통해서 email3 bean이 참조 대상 마다 생긴 것을 확인 할 수 있습니다.

    @Test public void prototypeScope(){
        Member keesun8 = getMember("keesun8");
        Member keesun9 = getMember("keesun9");
        Email email8 = keesun8.getEmail();
        Email email9 = keesun9.getEmail();
        assertNotSame(email8, email9);
    }

번외.. ref 에서 자동 완성 기능 사용 시 스크린 샷
사용자 삽입 이미지
역시.. 좋아요.

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

init-method & destroy-method  (0) 2007.03.10
InitializingBean & DisposableBean  (0) 2007.03.10
Bean's Life Cycle  (0) 2007.03.10
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
top