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 |
Tags
- SpringBoot
- Servlet
- 자바
- 김영한
- Proxy
- 백준
- Android
- 스프링 핵심 기능
- JPQL
- springdatajpa
- Greedy
- http
- db
- 스프링 핵심 원리
- 알고리즘
- Spring Boot
- Exception
- 스프링
- Thymeleaf
- pointcut
- transaction
- AOP
- spring
- kotlin
- 인프런
- 그리디
- jpa
- QueryDSL
- JDBC
- java
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
GitHub - bsh6463/Spring_Advanced: initial
initial. Contribute to bsh6463/Spring_Advanced development by creating an account on GitHub.
github.com
'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글
정리 및 한계 (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