[Spring] 템플릿 매소드 패턴

이대건·2024년 9월 27일
0

Spring

목록 보기
7/7
post-thumbnail

템플릿 매소드 패턴이란:

  • 상위 클래스에서 알고리즘의 구조를 정의하고, 그 알고리즘의 일부 단계를 하위 클래스에서 구현할 수 있도록 하는 패턴

구현법

  • 고리즘의 공통적인 부분은 상위 클래스에 두고, 변해야 할 부분은 하위 클래스에서 재정의

특징

  • 알고리즘의 구조 변경 없이 세부 동작을 하위 클래스에서 재정의 하여 사용
  • 코드의 재사용성과 유연성을 높인다.

AbstractApplicationContext 내 refresh()를 참고하여 탐구

  • GenericWebApplicationContext() 내에 refresh()라는 스프링 빈을 생성해주는 매소드가 있는데 이게 전형적인 템플릿 매소드 패턴이 적용된 사례

상속구조

아래부분은 catch구문임
  • 이처럼 매소드를 모두 분리한 뒤 호출만 하는 형태로 refresh 매소드는 일종의 템플릿이 됨

GenericWebApplicationContext.java

  • AbstractApplicationContext.java에서 try 내에 호출되는 매소드를 재정의하여 사용중인 것을 볼 수 있음

GenericApplicationContext.java

  • 반면 GenericApplicationContext에서는 refresh() 매소드의 catch문 내에서 호출하는 cancelRefresh()만 재정의 되어있다.

정리

  • refresh 매소드는 스프링 빈을 생성하는 알고리즘은 동일하지만 내부 구현 단계를 상속받는 클래스에서 재정의하여 사용하는 방식으로 구현되어있다.
profile
일낸머스크

0개의 댓글

관련 채용 정보