Spring

Spring Bean Definition Inheritance

n.han 2017. 3. 3. 23:52

Bean definition은 생성자 arguments, 속성값들, 그리고 container의 초기화 메서드, 정적 factory 메서드 등과 같이 많은 configuration 정보들을 포함할 수 있습니다.


Spring Bean definition에서는 상속이라는 개념이 있는데, 이는 자바의 클래스 상속과 무관하지만 상속이라는 개념은 같습니다. 


parent의 bean definition을 template으로 정의하고, 다른 child bean들이 필요한 설정들에 대해서 parent bean으로부터 상속 받는 것 입니다.


XML-based configuration metadata를 사용한다면, bean definition의 parent 속성의 값을 상속할 parent bean의 이름으로 지정함으로써 상속을 구현할 수 있습니다.


예를 들어, Person이라는 Bean을 상속하는 Teacher라는 Bean을 생각해봅시다.


Person에는 다음과 같이 name, job 속성이 있고, Teacher에는 name, job, salary 속성이 있습니다.



클래스에서는 자바에서의 상속이 일어나지 않으나, 다음과 같이 Configuration에서 속성 등의 설정을 상속 받기 위해서, child bean의 parent 속성 값을 Person으로 지정합니다.


그럼 teacher bean의 인스턴스에서 getter들을 호출하면 예상할 수 있는 값은 어떤 것일까요?



실제로 teacher의 name 속성에 값을 넣지 않아도, person에서 넣어준 name 속성 값으로 들어갑니다. 또한 job 속성 값이 override되어 teacher로 들어가게 됩니다.


'Spring' 카테고리의 다른 글

Spring - MVC Framework  (0) 2017.03.29
Spring Bean Post Processor  (0) 2017.02.27
init-method와 destroy-method 속성  (0) 2017.02.26
Spring Bean Scope  (0) 2017.02.24
Bean Definition  (0) 2017.02.24