TIL

TIL - FeignClient 정리

kinim329 2026. 3. 27. 21:09

FeignClient란?

FeignClient는 Spring Cloud에서 제공하는 선언형 HTTP 클라이언트이다.

다른 서버의 API를 호출할 때 RestTemplate이나 WebClient처럼 직접 요청 코드를 길게 작성하지 않고, 인터페이스 형태로 간단하게 외부 API 호출을 정의할 수 있게 해준다.

 

FeignClient를 사용하는 이유

서비스가 여러개로 나뉘어 있는 환경에서는 한 서비스가 다른 서비스의 API를 호출해야 하는 경우가 자주 발생한다.

이때 FeignCLient를 사용하면 HTTP호출 코드를 줄일 수 있고 인터페이스만으로 API 호출을 정의할 수 있으며 가독성이 좋아지고 유지보수가 편해진다. 즉, 서비스 간 통신을 더 간결하고 직관적으로 작성하기 위해 사용한다.

 

FeignClient의 특징

  • 인터페이스 기반으로 API 호출 가능
  • @GetMapping, @PostMapping등 Spring MVC 어노테이션 사용 가능
  • 코드가 단순해짐
  • 서비스 이름 기반 호출이 가능하여 MSA 환경과 잘 맞음
  • Eureka같은 서비스 디스커버리와 함께 사용가능
  • 로드밸런싱과 연계 가능

사용 방식

FeignClient는 보통 인터페이스로 작성한다.

@FeignClient(name = "user-service")
public interface UserClient {

    @GetMapping("/users/{id}")
    UserResponse getUser(@PathVariable Long id);
}

이렇게 작성하면 user-service라는 서비스를 대상으로 /users/{id} 요청을 보내는 클라이언트가 된다.

그리고 필요한 곳에서 주입받아 사용한다.

@Service
@RequiredArgsConstructor
public class OrderService {

    private final UserClient userClient;

    public UserResponse getUserInfo(Long userId) {
        return userClient.getUser(userId);
    }
}

 

동작 원리

FeignClient는 실행 시점에 인터페이스의 구현체를 자동으로 만들어준다.

개발자는 구현 클래스를 직접 작성하지 않아도 되고,

메서드를 호출하면 내부적으로 HTTP 요청이 전송된다.

1. 인터페이스에 호출할 API를 선언한다.

2. Spring이 이를 Bean으로 등록한다.

3. 해당 메서드를 호출하면 실제 HTTP 요청이 실행된다.

 

RestTemplate과의 차이

RestTamplate - 직접 요청 코드 작성

FeignClient - 선언만으로 요청 처리

'TIL' 카테고리의 다른 글

TIL - Kafka vs Kafka를 사용하지 않는 구조 비교  (1) 2026.03.29
TIL - Kafka 개념 정리  (0) 2026.03.28
TIL - Keycloak 개념 정리  (0) 2026.03.26
TIL - Redis TTL  (0) 2026.03.25
TIL - Redis 캐싱  (0) 2026.03.24