Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Greedy
- 그리디
- springdatajpa
- Servlet
- SpringBoot
- Spring Boot
- AOP
- 백준
- Proxy
- Android
- Exception
- 인프런
- 자바
- spring
- 스프링
- kotlin
- QueryDSL
- transaction
- JPQL
- pointcut
- 알고리즘
- db
- JDBC
- Thymeleaf
- java
- 스프링 핵심 기능
- 김영한
- jpa
- 스프링 핵심 원리
- http
Archives
- Today
- Total
개발자되기 프로젝트
Template CallBack - 1 본문
- Context --> Template
- Strategy --> Callback
1. Callback 인터페이스
public interface Callback {
void call();
}
2. TimeLogTemplate
- template는 호출할 callback을 전달 받는다.
- 전달된 callback은 클라이언트 코드 쪽에서 실행되는 것이 아니라 template 안에서 실행됨.
- 템플릿 콜백 패턴은 전략 패턴과 모든 것이 동일한데 전략을 익명 내부 클래스로 정의해서 사용한다.
@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);
}
}
3. Test
@Slf4j
public class TemplateCallbackTest {
/**
* 템플릿 콜백 패턴 - 익명 내부 클래스
*/
@Test
void callbackV1(){
TimeLogTemplate template = new TimeLogTemplate();
template.execute(new Callback() {
@Override
public void call() {
log.info("비즈니스 로직1 실행");
}
});
template.execute(new Callback() {
@Override
public void call() {
log.info("비즈니스 로직2 실행");
}
});
}
/**
* 템플릿 콜백 패턴 - 람다
*/
@Test
void callbackV2(){
TimeLogTemplate template = new TimeLogTemplate();
template.execute(() -> log.info("비즈니스 로직1 실행"));
template.execute(() -> log.info("비즈니스 로직2 실행"));
}
}
4. GitHub : 211122 Template CallBack-1
'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글
정리 및 한계 (0) | 2021.11.23 |
---|---|
Template CallBack - 2 (0) | 2021.11.22 |
Template CallBack - 시작 (0) | 2021.11.22 |
Strategy Pattern - 3 (0) | 2021.11.22 |
Strategy Pattern - 2, 익명 내부 클래스 (0) | 2021.11.22 |
Comments