이제 로드 밸런서 지원 RestTemplate 클래스에 대한 빈을 정의했으므로, 서비스를 호출할 때 RestTemplate 빈을 사용하려면 해당 빈을 사용할 클래스에서 자동 연결(autowire)만 하면 된다.
이러한 RestTemplate 클래스를 사용하는 것은 대상 서비스에 대한 URL을 정의하는 방식에서 한 가지 작은 차이점을 제외하고는 표준 스프링 RestTemplate 클래스와 매우 유사하다. RestTemplate 호출에서 서비스의 물리적 위치 대신 호출하려는 서비스의 유레카 서비스 ID를 사용하여 대상 URL을 생성해야 한다. 다음 코드에서 이 호출 과정을 확인할 수 있다. src/main/java/com/optimagrowth/license/service/client/OrganizationRestTemplateClient.java 클래스 파일에서 이 코드를 확인하자.
코드 6-14 로드 밸런서를 지원하는 RestTemplate을 사용한 서비스 호출하기
// 이해를 돕기 위해 대부분의 import 문은 생략
@Component
public class OrganizationRestTemplateClient {
@Autowired
RestTemplate restTemplate;
public Organization getOrganization(String organizationId) {
ResponseEntity<Organization> restExchange =
restTemplate.exchange(
"http://organization-service/v1/
organization/{organizationId}", ➊
HttpMethod.GET, null,
Organization.class, organizationId);
return restExchange.getBody();
}
}
➊ 로드 밸런서 지원 RestTemplate을 사용할 때 유레카 서비스 ID로 대상 URL을 생성한다.