다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 콜백(callback)이라고 함
참고로 템플릿 콜백 패턴은 GOF패턴은 아님
스프링 내부에서 이런 방식을 자주 사용하기 때문에, 스프링 안에서만 이렇게 부름
전략 패턴에서 템플릿과 콜백 부분이 강조된 패턴이라 생각하면 됨
🔄 템플릿 콜백 패턴이란?
템플릿(Template): 고정된 흐름 또는 공통 로직
콜백(Callback): 변화하는 부분, 즉 사용자 정의 동작을 나중에 주입
대표적으로 JdbcTemplate, RestTemplate, TransactionTemplate, RedisTemplate 같은 클래스에서 볼 수 있다고 함
template.execute(new Callback() {
public void doInCallback(Connection conn) {
// 쿼리 실행
}
});
커피 머신(템플릿)이 있다고 칩시다.
물을 끓이고 컵에 따르고 청소하는 일은 머신이 처리하고,
어떤 원두(콜백)를 넣을지는 사용자에게 맡기는 구조!
템플릿 콜백 패턴은 공통된 흐름은 템플릿이 담당하고, 변하는 핵심 로직만 콜백으로 분리해서 재사용성과 유연성을 높이는 패턴이다.