예전 스프링 스터디를 하면서 bean 에리먼트의 parent 어트리뷰트를 정의하는 것을 배운적이 있다.
사실 그때까지만해도 이 기능을 사용할 일이 있을까라는 생각을 했는데 오늘 난 이 기능을 사용하게 되었고 유용함을 느꼈다.
내가 사용하게 된 계기는 interceptor의 property 에 validator bean을 추가하는 과정에서 중복이 발생한다는 것이였다.
예를 들어 /a 라는 URL 패턴으로 접근하는 요청에 대해서 A라는 인터셉터가 동작하고 A라는 인터셉터에서는 valid_1, valid_2, valid_3 가 동작해야 한다.
/b 라는 URL 패턴에서는 B라는 인터셉터가 동작하고 valid_1, valid_2, valid_4 가 동작해야 한다.
여기서 확인할 수 있는 것은 valid_1, valid_2는 중복으로 인터셉터에 등록된다는 것이다.
이 중복을 어떻게 해소할 수 있을까라는 고민을 하게 되었고, 예전 스프링 스터디를 진행하면서 알게된 bean 엘리먼트의 parent 어트리뷰트가 생각났던 것이다.
예제를 다음과 같이 만들어봤다.
test-bean.xml
<bean id="common" abstract="true">
<property name="name" value="kyu" />
<property name="age" value="100" />
<property name="myFriends">
<list>
<value>kyu1</value>
<value>kyu2</value>
<value>kyu3</value>
</list>
</property>
</bean>
<bean id="profileMe" class="com.test.common.util.ProfileMeTest" parent="common">
<property name="job" value="developer" />
</bean>
Java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/test-bean.xml"})
public class InterceptorParentTest {
@Resource(name = "profileMe")
private ProfileMeTest profileMeTest;
@Test
public void getParentTest() {
System.out.println(profileMeTest);
}
}결과 값
ProfileMeTest(name=kyu, age=100, job=developer, myFriends=[kyu1, kyu2, kyu3])
'프로그래밍' 카테고리의 다른 글
스프링 빈 등록 (Java 코드 이용) (0) | 2014.08.13 |
---|---|
Resource files jar에 포함시키기 (META-INF/resources) (0) | 2014.07.25 |
HTTP multipart/form-data raw 데이터는 어떤 형태일까? (13) | 2014.06.30 |
My first Java8 Programming (0) | 2014.06.20 |
spring util:map 사용 시 key와 value 타입 지정 (0) | 2014.05.17 |
c:import 사용 시 주의사항 (Request method 'POST' not supported) (2) | 2014.05.16 |
Tiles definition 렌더링 전 처리 방법 (ViewPreparer 사용) (0) | 2014.04.30 |
HTTP request body copy 방법 (0) | 2014.04.29 |