@FeignClient
**는 Spring Cloud에서 제공하는 어노테이션 중 하나로, 주로 마이크로서비스 간의 통신을 쉽게 구현하기 위해 사용됩니다.@FeignClient
**를 사용하여 인터페이스를 선언하면 해당 인터페이스의 메서드들은 원격 서버에 요청을 보내는데 사용됩니다.@RestController
@RequestMapping("/api")
public class MyController {
@RequestMapping(method = RequestMethod.GET, value = "/hello")
public String hello() {
return "Hello, world!";
}
}
@RequestMapping
: Spring @RestController
클래스에서 **@RequestMapping
**을 사용하면 HTTP 요청을 해당 컨트롤러 내의 특정 핸들러 메서드에 매핑하는 데 사용됩니다.@FeignClient(name = "elasticsearchClient", url = "${feign.secret.elasticsearchIP}")
public interface ElasticsearchClient {
/**
* 통합검색 > 논문 검색
*/
@RequestMapping(method = RequestMethod.POST, value = "/paper/_search")
Map<String, Object> searchPapers(@RequestBody Map<String, Object> body);
}
@RequestMapping
: Feign Client 인터페이스에서 **@RequestMapping
**을 사용할 때 Feign Client가 실제 HTTP 요청을 할 때 사용해야 하는 대상 URL 및 HTTP 메서드를 선언하는 데 사용됩니다.@RestController
**와 같이 들어오는 HTTP 요청을 처리하지 않습니다.여기서 ElasticsearchClient
인터페이스는 호출할 때마다 "/paper/_search" 경로를 사용하여 지정된 URL("${feign.secret.elasticsearchIP}"
)에 HTTP POST 요청을 수행하도록 설계된 Feign 클라이언트입니다.
따라서 두 주석 모두 **@RequestMapping
**이라고 부르지만 용도와 목적이 다릅니다.
<aside> 💡 RestController의 경우 들어오는 HTTP 요청을 처리하는 반면 Feign 클라이언트 인터페이스에서는 나가는 HTTP 요청의 대상 끝점을 정의합니다.
</aside>