@FeignClient
注解在 Spring Boot 中用于声明一个接口作为 Feign 客户端,用于微服务间的远程调用。
以下是 @FeignClient
注解的主要属性和用法:
name
: 指定服务名称,用于创建 Ribbon 客户端,从而实现负载均衡。url
: 直接指定调用的服务URL,不通过服务发现。serviceId
: 指定服务ID,当name
和url
都未指定时,将使用serviceId
作为服务名。contextId
: 指定 Feign 客户端的 Bean 名称,当需要定义多个 Feign 客户端时,可以通过contextId
区分。decode404
: 是否将HTTP 404错误解码为null
,默认为false
。configuration
: 指定自定义的 Feign 配置类,可以是配置类的数组。fallback
: 指定 fallback 类,当服务调用失败时,fallback 类中的方法将被调用。path
: 指定服务URL的路径,会添加到服务名称之后。
示例代码:
@FeignClient(name = "service-provider",
url = "http://localhost:8080",
configuration = CustomFeignConfiguration.class,
fallback = ServiceProviderFallback.class,
path = "/api")
public interface ServiceProviderClient {
@GetMapping("/users/{id}")
User getUser(@PathVariable("id") Long id);
@PostMapping("/users")
User createUser(@RequestBody User user);
}
在这个例子中,ServiceProviderClient
接口定义了对 service-provider
服务的两个HTTP请求的映射。name
属性指定了服务名称,url
属性指定了服务的基础URL,configuration
属性指定了自定义的 Feign 配置类,fallback
属性指定了当服务不可用时的回退处理类。path
属性确保了所有映射的方法都会添加 /api
路径前缀。