코드 6-9에서 URL 경로로 전달된 clientType 매개변수는 코드 예제에서 사용할 클라이언트 타입을 결정한다. 이 경로에서 전달할 수 있는 특정 타입은 다음과 같다.
• Discovery: Discovery Client와 표준 스프링 RestTemplate 클래스를 사용하여 조직 서비스를 호출한다.
• Rest: 향상된 스프링 RestTemplate으로 로드 밸런서(Spring Cloud Load Balancer)를 사용하는 서비스를 호출한다.
• Feign: 넷플릭스 Feign 클라이언트 라이브러리를 사용해서 로드 밸런서4를 경유하여 서비스를 호출한다.
Note ≣
세 가지 클라이언트 타입 모두 동일한 코드를 사용하므로 불필요해 보이는 클라이언트 애너테이션이 표시되는 경우가 있다. 예를 들어 둘 중 한 클라이언트 타입만 설명하는 경우에도 @EnableDiscoveryClient와 @EnableFeignClients 애너테이션이 모두 코드에 있다. 이는 예제를 하나의 코드베이스로 사용하려는 조치로, 앞으로 이러한 중복과 코드가 나오면 알려 줄 것이다. 언제나 그렇듯 필요에 따라 가장 적합한 것을 선택하면 된다.
src/main/java/com/optimagrowth/license/service/LicenseService.java 클래스에서 URL 경로로 전달된 clientType을 기반으로 확인하는 간단한 retrieveOrganizationInfo() 메서드를 추가했다. 이 클라이언트 타입은 조직 서비스 인스턴스를 검색하는 데 사용된다. LicenseService 클래스의 getLicense() 메서드는 retrieveOrganizationInfo() 메서드를 사용하여 Postgres 데이터베이스에서 조직 데이터를 조회한다. 다음 코드는 LicenseService 클래스의 getLicense() 메서드를 보여 준다.