@EnableDiscoveryClient는 스프링 클라우드에서 애플리케이션이 Discovery Client 및 스프링 클라우드 로드 밸런서 라이브러리를 사용할 수 있게 한다. 이제 스프링 Discovery Client를 통해 조직 서비스를 호출하는 구현 코드를 살펴보자. 다음 코드는 이 구현을 보여 주는데 src/main/java/com/optimagrowth/license/service/client/OrganizationDiscoveryClient.java 파일에서 확인할 수 있다.
코드 6-12 Discovery Client를 사용한 정보 검색하기
@Component
public class OrganizationDiscoveryClient {
@Autowired
private DiscoveryClient discoveryClient; ➊
public Organization getOrganization(String organizationId) {
RestTemplate restTemplate = new RestTemplate();
List<ServiceInstance> instances = ➋
discoveryClient.getInstances("organization-service");
if (instances.size() == 0) return null;
String serviceUri = String.format(
"%s/v1/organization/%s", instances.get(0).getUri().toString(),
organizationId); ➌
ResponseEntity< Organization > restExchange = ➍
restTemplate.exchange(
serviceUri,
HttpMethod.GET,
null, Organization.class, organizationId);
return restExchange.getBody();
}
}
➊ Discovery Client를 클래스에 주입한다.
➋ 조직 서비스의 모든 인스턴스 리스트를 얻는다.
➌ 서비스 엔드포인트를 검색해서 가져온다.
➍ 서비스 호출을 위해 표준 스프링 RestTemplate 클래스를 사용한다.