'parent'에 해당되는 글 2건

  1. 2008.01.07 abstract, parent 속성
  2. 2007.12.09 Collections 사용하기
먼저 두개의 bean을 보겠습니다.

masterName 프로퍼티의 경우 아빠와 아들의 경우 설정이 중복 됩니다.
이때 parent속성으로 부모 bean을 지정하게 되면 설정 내용들을 상속 받게 됩니다.
(단, 동일한 설정에 대해서는 오버라이드 되지 않습니다.)

여기서 포인트가 있는데 자식 bean의 class가 명시되어 있다면 부모 bean의 설정 내용들만 상속 받게 됩니다.
이 말은 부모 bean이 다른 클래스여도 상관 없고 class가 지정안된 bean일지라도 상관 없다는 뜻입니다.
아래 예제가 바로 그런 경우 입니다.

master는 class가 지정되지 않았기 때문에 인스턴스화 될 수 없으므로 abstract="true"을 사용해 인스턴스 생성을 방지 하고 있습니다.
abstract가 설정된 bean은 스스로 인스턴스화 될 수 없고 오직 자식 bean에서만 사용가능하게 됩니다.

만약 자식 bean의 class가 명시되어 있지 않다면 부모 bean의 class를 상속 받게 됩니다.
따라서 부모 bean은 완전한 형태여야만 합니다.

신고
Posted by 째코

기존의 bean 프로퍼티 설정과 거의 비슷합니다.
<list/>, <set/>, <map/>, <props/> 요소를 이용해 값을 설정 합니다.
자주 사용하는 java.util.List와 java.util.Map을 이용한 예제를 보겠습니다.
먼저 친구목록(List)와 주소(Map)을 가지고 있는 AddressBook 클래스 입니다.
그리고 설정파일 입니다.

실행 결과

홍길동 서울시 강남구 도곡동 타워팰리스 101동 101호
임꺽정 서울시 강남구 도곡동 타워팰리스 202동 202호
슈퍼맨 서울시 강남구 도곡동 타워팰리스 303동 303호
배트맨 서울시 강남구 도곡동 타워팰리스 404동 404호


Collection 병합
Collection 요소(<list/>, <set/>, <map/>, <props/>)에 merge속성을 true로 주면 됩니다.
그리고 새로운 속성인 parent가 등장 하는데 이름에서 알 수 있듯이 부모 bean을 지정합니다.부모 bean을 지정하면 부모 bean의 설정 정보들이 자식 bean에게 상속이 됩니다. 만약 자식 bean에 같은 프로퍼티에 대한 설정이 있다면 자식 bean의 설정 값으로 오버라이딩 됩니다. 만약 merge 속성을 true로 설정 하지 않는다면 병합이 이루어 지지 않고 무조건 자식 bean에서 정의한 값들만 주입 될 것입니다.
아래 예제 에서는 부모 bean의 홍길동에 대한 값이 자식 bean에서 오버라이딩 된 경우 입니다.

실행결과

노숙자 서울역
홍길동 서울시 강남구 도곡동 타워팰리스 101동 101호
임꺽정 서울시 강남구 도곡동 타워팰리스 202동 202호
슈퍼맨 서울시 강남구 도곡동 타워팰리스 303동 303호
배트맨 서울시 강남구 도곡동 타워팰리스 404동 404호
신고

'Spring > Core' 카테고리의 다른 글

간략화 된 설정  (0) 2007.12.10
null 값 다루기  (0) 2007.12.09
Collections 사용하기  (0) 2007.12.09
Bean 상세화된 설정  (0) 2007.12.08
의존성 삽입하기  (0) 2007.12.07
BeanFactory 사용하기  (0) 2007.12.05
Posted by 째코