<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 에서 자동 완성 기능 사용 시 스크린 샷
사용자 삽입 이미지역시.. 좋아요.