스프링/스프링 핵심 원리 - 고급편

24. 템플릿 콜백 패턴

sdafdq 2024. 1. 17. 12:02

사실 기존거랑 똑같다.

 

콜백은 언어마다 다를 수 있는데,

 

자바의 콜백은 따지고 보면 앞서 했던 람다 방식 처럼 함수 하나만 있는 인터페이스에 람다식으로 주는 것 이다.

 

그래서, 이제 템플릿 콜백 패턴으로 만들면

 

public interface Callback {
    void call();
}

그냥 순수 콜백용 인터페이스 하나 구현하고,

 

@Slf4j
public class TimeLogTemplate {
    public void execute(Callback callback){
        long startTime = System.currentTimeMillis();

//        비즈니스 로직 실행
        callback.call();

        long endTime = System.currentTimeMillis();
        long resultTime = endTime - startTime;
        log.info("resultTime={}", resultTime);
    }
}

템플릿, 즉 틀을 만들어 주고,

저기서 콜백을 인자로 받고 실행.

 

@Test
void callbackV1(){
    TimeLogTemplate template = new TimeLogTemplate();
    template.execute(()->log.info("비즈니스 로직1"));
}

이렇게 활용

 

 

참고로, 

JdbcTemplate 등 스프링에서 저렇게 뒤에 Template 붙은 건 이 콜백패턴 사용한 거임.