Spring Cloud에서 Feign에 대한 일반적인 질문 요약
4268 단어 springcloudfeign
코드 예:
@FeignClient("microservice-provider-user")
public interface UserFeignClient {
@RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)
public User findById(@PathVariable("id") Long id);
...
}
이쪽 @RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)
은 @GetMapping("/simple/{id}")
으로 쓸 수 없습니다.2. FeignClient 인터페이스에서 @PathVariable에 사용할 경우 value를 지정해야 합니다.
코드 예:
@FeignClient("microservice-provider-user")
public interface UserFeignClient {
@RequestMapping(value = "/simple/{id}", method = RequestMethod.GET)
public User findById(@PathVariable("id") Long id);
...
}
이쪽 @PathVariable("id")
의 "id"는 생략할 수 없습니다. 지정해야 합니다.3. FeignClient 다중 매개 변수의 구조
microservice-provider-user 서비스를 요청하려면 다음과 같은 매개 변수가 여러 개 있습니다.http://microservice-provider-user/query-by?id=1&username=장삼이 어떡하지?
복잡한 객체를 직접 사용하려면 다음과 같이 하십시오.
@FeignClient("microservice-provider-user")
public interface UserFeignClient {
@RequestMapping(value = "/query-by", method = RequestMethod.GET)
public User queryBy(User user);
...
}
이 요청은 성공하지 않습니다. 매개 변수가 복잡한 대상이라면 GET 방법이라고 지정되었더라도 feign은 POST 방법으로 요청을 보냅니다.정확한 쓰기 방법:
쓰기 1:
@FeignClient("microservice-provider-user")
public interface UserFeignClient {
@RequestMapping(value = "/query-by", method = RequestMethod.GET)
public User queryBy(@RequestParam("id")Long id, @RequestParam("username")String username);
}
쓰기 2:
@FeignClient(name = "microservice-provider-user")
public interface UserFeignClient {
@RequestMapping(value = "/query-by", method = RequestMethod.GET)
public List<User> queryBy(@RequestParam Map<String, Object> param);
}
4. Feign Hystrix Stream을 사용하려면 추가 작업이 필요합니다.Feign 자체가 Hystrix를 지원하는 것으로 알고 있습니다.
@FeignClient(value = "microservice-provider-user", fallback = XXX.class)
를 사용하여 fallback의 클래스를 지정할 수 있습니다. 이 fallback 클래스는 @FeignClient에 표시된 인터페이스를 통합하면 됩니다.하지만 Hystrix Stream을 사용하여 모니터링해야 하는 경우 기본적으로 액세스http://IP:PORT/hystrix.stream404입니다.Feign에 Hystrix Stream 지원을 추가하려면 어떻게 해야 합니까?
다음 두 단계가 필요합니다.
첫 번째 단계: 의존 추가, 예:
<!-- hystrix, feign hystrix, hystrix-metrics-event-stream, dashboard -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
2단계: 시작 클래스에 @EnableCircuitBreaker 메모를 추가합니다. 예:
@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
@EnableCircuitBreaker
public class MovieFeignHystrixApplication {
public static void main(String[] args) {
SpringApplication.run(MovieFeignHystrixApplication.class, args);
}
}
이렇게 수정한 후 API에 액세스한 후http://IP:PORT/hystrix.stream, 수많은 API 모니터링 데이터를 보여줍니다.5. 단일 Feign 구성을 사용자 정의해야 하는 경우 Feign의 @Configuration 메모 클래스는 @ComponentScan 패키지와 중첩될 수 없습니다.
패키지가 겹치면 모든 Feign Client에서 이 구성을 사용합니다.
6. 첫 번째 요청 실패
자세히 보기: Spring Cloud에서 Feign/Ribbon의 첫 번째 요청 실패를 해결하는 방법
7, @FeignClient 속성 참고 사항
(1) 서비스Id 속성이 효력을 잃었습니다.name 속성을 최대한 사용하십시오.예:
@FeignClient(serviceId = "microservice-provider-user")
이렇게 쓰는 것은 추천하지 않는다.
@FeignClient(name = "microservice-provider-user")
(2) url 속성을 사용할 때 이전 버전의 Spring Cloud에서name 속성을 제공할 필요가 없지만 새 버전(예를 들어 Brixton, Camden) @FeignClient에서name 속성을 제공해야 하고name, url 속성은 자리 표시자를 지원합니다.예:
@FeignClient(name = "${feign.name}", url = "${feign.url}")
총결산이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있기를 바랍니다. 만약에 의문이 있으면 여러분은 댓글을 남겨 교류할 수 있습니다. 저희에 대한 지지에 감사드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud에서 Feign에 대한 일반적인 질문 요약1. FeignClient 인터페이스, @GettingMapping 같은 조합 메모는 사용할 수 없음 코드 예: 이쪽 @RequestMapping(value = "/simple/{id}", method = Reque...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.