Template/Callback 패턴

헨도·2025년 7월 4일
0

SpringBoot

목록 보기
34/35
post-thumbnail

토비의 스프링 책을 읽으며 템플릿/콜백 패턴에 대한 내용이 나왔다.
책에는 물론 자세하게 설명이 되어있지만 조금 더 정리하고 싶어 글을 쓰게되었다.

Template/Callback Pattern 이란?

공통 처리 로직(자원 획득, 예외 처리 등)을 템플릿 안에 정의하고, 사용자 코드(비즈니스 로직)는 콜백 인터페이스로 전달해서 실행하는 패턴

특히 트랜잭션 처리, DB 접근, 메시징 등 자주 쓰이는 영역에 많이 적용돼 있다.

왜 쓸까?

  • 매번 반복되는 try/catch/finally 를 사용해서 비즈니스 로직은 짧은데 매번 중복되는 코드가 지저분하고 유지보수 또한 어렵기 때문에!
  • 비즈니스 로직에만 집중할 수 있도록!
  • 공통 처리(트랜잭션, 예외 반환 등)를 일관되게 적용 가능하므로!

흐름 요약

[Template]
자원 할당

try {
	[callback 호출] -> 사용자가 전달한 핵심 코드
} catch {
	예외 반환
} finally {
	자원 해제
}

직접 구현해보면?

템플릿 코드

public class SimpleTemplate {
	public void execute(Callback callback) {
    	System.out.println("자원 준비");
        
        try {
        	callback.doWork();
        } finally {
        	System.out.println("자원 정리");
        }
    }
}

콜백 인터페이스

public interface Callback {
	void doWork();
}

실행 코드

public class App {
	public static void main(String[] args) {
    	SimpleTemplate template = new SimpleTemplate();
        
        template.execute(() -> {
        	System.out.println("핵심 비즈니스 로직 실행");
        });
    }
}

실행 결과

자원 준비
핵심 비즈니스 로직 실행
자원 정리

장점

  • 공통코드 제거
  • 핵심 로직과 자원/예외 처리 분리
  • 일관된 트랜잭션/예외 처리 가능
  • 콜백은 람다나 함수형 인터페이스로 처리 가능

스프링에서 사용하는 대표 템플릿/콜백 클래스

템플릿 클래스용도
JdbcTemplateJDBC 데이터베이스 접근
TransactionalTemplate트랜잭션 관리
RestTemplateHTTP 통신
RedisTemplateRedis 데이터 처리
profile
Junior Backend Developer

0개의 댓글