백엔드/프레임워크

[토비의 스프링] 3장: 템플릿

박지환 2023. 1. 28. 14:31
토비의 스프링: Vol. 1: 스프링의 이해와 원리

템플릿

변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가지는 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법

전략 패턴의 적용

오브젝트를 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만들기

전략 패턴의 실제적인 사용 방법: Client가 구체적인 전략의 하나를 선택하고 오브젝트로 만들어서 Context에 전달, Context는 전달받은 그 Strategy 구현 클래스의 오브젝트 사용

DI는 이러한 전략 패턴의 장점을 일반적으로 활용할 수 있도록 만든 구조

밀접한 관계를 가지는 클래스를 DI 하는 2가지 방법

  • 스프링의 DI를 이용하기 위해 빈으로 등록
  • 코드를 이용해 수동으로 DI하는 방법

템플릿/콜백 패턴

전략 패턴의 기본 구조에 익명 내부 클래스를 활용한 방식

  • 전략 패턴의 컨텍스트 = 템플릿
  • 익명 내부 클래스 오브젝트 = 콜백

 

  • 템플릿(template): 어떤 목적을 위해 미리 만들어둔 모양이 있는 틀. 고정된 작업 흐름을 가진 코드를 재사용한다는 의미
  • 콜백(callback): 실행되는 것을 목적으로 다른 오브젝트의 메소드에 전달되는 오브젝트, 특정 로직을 담은 메소드를 실행하기 위해 사용, 자바에서는 메소드가 담긴 오브젝트 형태로 전달해야 함 (functional object). 템플릿 안에서 호출되는 것을 목적으로 만들어진 오브젝트

템플릿/콜백의 응용

  • 리턴 값을 갖는 템플릿
  • 템플릿 내에서 여러 번 호출되는 콜백 오브젝트
  • 제네릭스 타입을 갖는 메소드나 콜백 인터페이스
  • 스프링의 JdbcTemplate이 다양한 템플릿과 콜백을 제공하므로 이를 이용할 수 있음

정리

개방 폐쇄 원칙을 구현하는 방법: 템플릿/콜백

주요 내용

  • JDBC와 같은 예외가 발생할 가능성 있으며 공유 리소스의 반환이 필요한 코드는 반드시 try/catch/finally 블록으로 관리해야 한다.
  • 일정한 작업 흐름이 반복되면서 그중 일부 기능만 바뀌는 코드가 존재한담녀 전략 패턴을 적용한다. 바뀌지 않는 부분은 컨텍스트로, 바뀌는 부분은 전략으로 만들고 인터페이스를 통해 유연하게 전략을 변경할 수 있도록 구성한다.
  • 같은 애플리케이션 안에서 여러 가지 종류의 전략을 다이내믹하게 구성하고 사용해야 한다면 컨텍스트를 이용하는 클라이언트 메소드에서 직접 전략을 정의하고 제공하게 만든다.
  • 클라이언트 메소드 안에 익명 내부 클래스를 사용하여 전략 오브젝트를 구현하면 코드도 간결해지고 메소드의 정보를 직접 사용할 수 있어서 편리하다.
  • 컨텍스트가 하나 이상의 클라이언트 오브젝트에서 사용된다면 클래스를 분리해서 공유하도록 만든다.
  • 컨텍스트는 별도의 빈으로 등록해서 DI 받거나 클라이언트 클래스에서 직접 생성해서 사용한다. 클래스 내부에서 컨텍스트를 사용할 때 컨텍스트가 의존하는 외부의 오브젝트가 있다면 코드를 이용해서 직접 DI 해줄 수 있다.
  • 단일 전략 메소드를 갖는 전략 패턴이면서 익명 내부 클래스를 사용해서 매번 전략을 새로 만들어 사용하고, 컨텍스트 호출과 동시에 전략 DI를 수행하는 방식을 템플릿/콜백 패턴이라고 한다.
  • 콜백의 코드에도 일정한 패턴이 반복된다면 콜백을 템플릿에 넣고 재활용하는 것이 편리하다.
  • 템플릿과 콜백의 타입이 다양하게 바뀔 수 있다면 제네릭스를 이용한다.
  • 스프링은 JDBC 코드 작성을 위해 JdbcTemplate을 기반으로 하는 다양한 템플릿과 콜백을 제공한다.
  • 템플릿은 한 번에 하나 이상의 콜백을 사용할 수도 있고, 하나의 콜백을 여러 번 호출할 수도 있다.
  • 템플릿/콜백을 설계할 때는 템플릿과 콜백 사이에 주고받는 정보에 관심을 둬야 한다.

 

Reference: http://www.yes24.com/Product/Goods/7516721

 

토비의 스프링 3.1 Vol. 1 스프링의 이해와 원리 - YES24

대한민국 전자정부 표준 프레임워크 스프링을 설명하는 책!단순한 예제를 스프링 3.0과 스프링 3.1의 기술을 적용하며 발전시켜 나가는 과정을 통해 스프링의 핵심 프로그래밍 모델인 IoC/DI, PSA, A

www.yes24.com