生命feignClient的几种方式
时间: 2023-12-10 11:42:38 浏览: 77
Feign是一个基于接口注解的声明式HTTP客户端,它可以帮助我们快速方便的实现基于HTTP的服务调用。在Spring Cloud中,我们通常使用Feign来消费其他服务的接口,它提供了多种使用方式。
1. 基于注解方式
使用@FeignClient注解来声明一个Feign客户端,其中value属性指定了要调用的服务名,而接口中的方法则对应了服务中的具体接口。例如:
```
@FeignClient(value = "service-provider")
public interface UserService {
@GetMapping("/user/{id}")
public User getUser(@PathVariable("id") Long id);
@PostMapping("/user")
public void addUser(@RequestBody User user);
@PutMapping("/user")
public void updateUser(@RequestBody User user);
@DeleteMapping("/user/{id}")
public void deleteUser(@PathVariable("id") Long id);
}
```
2. 基于接口继承方式
可以通过继承Feign客户端接口来实现服务调用。例如:
```
@FeignClient(value = "service-provider")
public interface UserService extends UserApi {
}
public interface UserApi {
@GetMapping("/user/{id}")
public User getUser(@PathVariable("id") Long id);
@PostMapping("/user")
public void addUser(@RequestBody User user);
@PutMapping("/user")
public void updateUser(@RequestBody User user);
@DeleteMapping("/user/{id}")
public void deleteUser(@PathVariable("id") Long id);
}
```
3. 基于配置类方式
可以通过编写配置类来实现Feign客户端的配置,例如:
```
@Configuration
public class UserServiceFeignConfig {
@Bean
public UserService getUserService() {
return Feign.builder()
.client(new OkHttpClient())
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.target(UserService.class, "http://localhost:8080");
}
}
```
以上三种方式都可以实现Feign客户端的调用,具体使用哪种方式取决于开发者的实际需求和习惯。
阅读全文