2010년 3월 17일 수요일

Spring Bean Alias 사용예

Spring 에서 bean을 xml로 설정 할때 "id" 또는 "name"
attribute에 값을 설정 합니다.
이 설정된 값은 IoC 컨테이너에 유일한
bean 식별자 됩니다.
하지만 가끔 bean 한개에 식별자를 한 개이상
설 정을 할때가 있습니다.
그때 사용하는 attribute가 바로 "alias"입니다.
즉 나는 하나지만 이름은 여러개란 뜻입니다.
그러면 이런 alias는 어떤 case일때 사용해야
하는지 말씀 드리겠습니다.

만약 A라는 시스템이 있습니다.
여기서 데이터 소스 빈 설정은 아래와 같이
되어 있습니다.
<bean id="dataSourceA" class="org.beyondj2ee.DataSource"/>

A시스템에 있는 DAO 클래스는 ref="dataSourceA"
로 설정이 되어 있습니다.

이제 B라는 시스템이 있습니다.
<bean id="dataSourceB" class="org.beyondj2ee.DataSource"/>

역시 마찬가지로
B시스템에 있는 DAO 클래스는 ref="dataSourceB"
로 설정이 되어 있습니다.

어느날 Intergration이라는 A,B를 통합 하는
시스템을 구축하려고 합니다.
A시스템과 B 시스템은 각각 별도의 DB를
가지고 있습니다. 그래서 양쪽 DB를
하나의 통합 DB로 마이그레이션을 했습니다.
이 통합 DB를 보는 bean 설정은 아래와 같습니다.
<bean id="dataSourceTotal" class="org.beyondj2ee.DataSource"/>


그런데 Application을 통합하는 과정에서
문제가 발생 했습니다.
각 시스템에서 데이터 소스의 bean id가
제 각각 틀리게 구성되었습니다.
그래서 각각 DAO로 선언된 bean들이
참조하는 "ref" 속성을 전부 수정해야 합니다
이때 "alias"태그를 사용합니다.
아래와 같이 설정을 해서 통합 합니다.
<alias name="dataSourceTotal" alias="dataSourceA"/>
<alias name="dataSourceTotal" alias="dataSourceB"/>

이런면 각 시스템에 DataSource를 참조하는 bean들을
수정 없이 해결 할 수있습니다.
bean 설계시 고려 하시기를 바랍니다.

댓글 없음:

댓글 쓰기