Feign Client : Netflix에서 개발한 선언적인 http client 도구
선언적인 = 어노테이션 사용 의미
http client 통신 위한 여러 방법 존재하나(RestTemplate, WebClient, Apache의 HttpClient), Feign은 기존 httpClient보다 더욱 간단 사용, 여러 장점 포함
@PostMapping, @RequestParam, @PathVariable 등) 그대로 사용 가능 -> 새로 배워야하는 것이 많지 않아짐.@MockBean으로 주입받아서 가짜 동작을 설정할 수 있음)config 통해 커스텀 가능.1. build.gradle 디펜던시 추가
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
2. 메인 애플리케이션에 @EnableFeignClients
@SpringBootApplication
@EnableFeignClients
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
3. 인터페이스 작성 + @FeignClient
@FeignClient(name = "example", url = "http://localhost:8081")
public interface ExampleClient {
@GetMapping("/examplefeign")
String getFeign();
}
@EnableFeignClients가 지정된 package 돌아다니며 @FeignClient를 찾아 구현체 만들어줌.name(또는 value) : Feign Client 이름. eureka 연동할 때, 해당 name으로 서비스 등록됨.url : 호출할 API url.4. FeignClient 주입받아 사용
@Service
@RequiredArgsConstructor
public class ExampleService {
private final ExampleClient exampleClient;
public String ExampleFeign(){
return exampleClient.getFeign();
}
}