RestTemplate, JdbcTemplate, JmsTemplate, TransactionTemplate, JpaTemplate, HibernateTemplate…
우리가 단순하게 만든 APITemplate
의 고급 버전
HTTP의 모든 기능을 다 사용하여 API를 호출하는 다양한 포맷을 지원
(가장 전형적인 스프링의 템플릿과 콜백 기술을 사용한 기술)
ClientHttpRequestFactory
HttpMessageConverter
스프링의 기술을 사용하는 코드로 전환
위처럼 코드를 작성하고 RestTemplateExRateProvider
로 기능이 잘 동작하는지 확인하면 아래와 같이 Client
가 잘 작동하는 것을 확인할 수 있음
PaymentService
의 코드에 전혀 영향을 끼지지 않음. DI를 이용하여 잘 분리를 해뒀기 때문임
RestTemplateExRateProvider
를 사용하던지 WebApiExRateProvider
를 사용하던지에 상관없이 PaymentService
는 변경되지 않고 잘 유지되면서 하위 기술은 원하는 대로 확장해서 사용할 수 있는 것