ApiExecutor 콜백과 메소드 주입
2024. 7. 11. 15:58ㆍ토비의 스프링 6
ApiExecutor
package tobyspring.hellospring.api;
import java.io.IOException;
import java.net.URI;
public interface ApiExecutor {
String execute(URI uri) throws IOException;
}
SimpleApiExecutor
package tobyspring.hellospring.api;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.util.stream.Collectors;
public class SimpleApiExecutor implements ApiExecutor{
@Override
public String execute(URI uri) throws IOException {
String response;
HttpURLConnection connection = (HttpURLConnection) uri.toURL().openConnection();
try(BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));){
response = br.lines().collect(Collectors.joining());
}
return response;
}
}
콜백 : 실행되는 것을 목적으로 다른 오브젝트의 메소드에 전달되는 오브젝트, 파라미터로 전달되지만 값을참조하기 위한 것이 아니라 특정 로직을 담은 메소드를 실행 시키는 것이 목적
하나의 메소드를 가진 인터페이스 타입(SAM)의 오브젝트 또는 람다 오브젝트
템플릿/콜백은 전략 패턴의 특별한 케이스
템플릿은 전략 패턴의 컨텍스트
콜백은 전략 패턴의 전략
템플릿/ 콜백은 메소드 하나만 가진 전략 인터페이스를 사용하는 전략 패
메소드 주입
- 의존 오브젝트가 메소드 호출 시점에 파라미터로 전달되는 방식
- 의존관계 주입의 한 종류
- 메소드 호출 주입(method call injection)이라고도 한다



'토비의 스프링 6' 카테고리의 다른 글
| 예외 (0) | 2024.07.12 |
|---|---|
| Spring이 제공하는 템플릿 (0) | 2024.07.11 |
| 변하지 않는 코드 분리하기 (0) | 2024.07.10 |
| 변하는 코드 분리하기 - 메소드 추출 (0) | 2024.07.10 |
| 도메인 오브젝트 테스트 (0) | 2024.07.08 |