토비의 스프링 책을 읽으며 템플릿/콜백 패턴에 대한 내용이 나왔다.
책에는 물론 자세하게 설명이 되어있지만 조금 더 정리하고 싶어 글을 쓰게되었다.
공통 처리 로직(자원 획득, 예외 처리 등)을 템플릿 안에 정의하고, 사용자 코드(비즈니스 로직)는 콜백 인터페이스로 전달해서 실행하는 패턴
특히 트랜잭션 처리, DB 접근, 메시징 등 자주 쓰이는 영역에 많이 적용돼 있다.
[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("핵심 비즈니스 로직 실행");
});
}
}
자원 준비
핵심 비즈니스 로직 실행
자원 정리
템플릿 클래스 | 용도 |
---|---|
JdbcTemplate | JDBC 데이터베이스 접근 |
TransactionalTemplate | 트랜잭션 관리 |
RestTemplate | HTTP 통신 |
RedisTemplate | Redis 데이터 처리 |