의존성 역전
- (Web Adapter)는 서비스에 의해 구현된 인터페이스의 전용 포트를 통해 애플리케이션 계층과 통신
<aside>
💡 웹 어댑터
- 주도하는 혹은 인커밍 어댑터
- 외부로부터 요청을 받아 애플리케이션 코어를 호출하고 무엇을 할지 알려줌
- 제어 흐름 : 웹 어댑터(컨트롤러) → 애플리케이션 계층(서비스)
</aside>
웹 어댑터 외에도 다양한 어댑터 들들이 존재한다
- **
의존성 역전 원칙이 적용
**되어 있음
- 웹 어댑터가 유스케이스 직접 호출 가능
- 포트 인터페이스를 삭제하고 서비스 직접 호출 가능
- 애플리케이션 코어가 외부 세계와 통신할 수 있는 곳에 대한 명세가 포트이기에 인터페이스를 통해야함
- 외부와 어떤 통신이 일어나는지 바로 확인 가능
소켓 통신에 적용한다면 ?
웹 어댑터의 책임
- 일반적인 웹 어댑터의 역할
- HTTP 요청을 자바 객체로 매핑 (@RequestBody)
- 권한 검사 (security)
- 입력 유효성 검증 (@Valid)
- 유스케이스의 맥락에서의 유효성은 유스케이스의 입력 모델이 검증함
- 웹 어댑터의 입력모델은 완전히 다른 유효성 검증
- 웹 어댑터의 입력 모델을 유스케이스의 입력 모델로 변환할 수 있음이 검증되어야함
- 입력을 유스케이스의 입력 모델로 매핑
- 유스케이스 호출
- 유스케이스의 출력을 HTTP로 매핑
- HTTP 응답을 반환