Feign是一个声明式的Web服务客户端,使得编写服务客户端变得很容易
实现方式只需要定义一个接口,并且加上注解就可以
在客户端pom文件中添加Feign的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
编写接口,并加上@FeignClient注解,注解上定义了对应的微服务名
@FeignClient(value = "MICROSERVICECLOUD-DEPT")
public interface DeptClientService {
@RequestMapping("/dept/add")
public boolean add(Dept dept);
@RequestMapping("/dept/get/{id}")
public Dept get(@PathVariable Long id);
@RequestMapping("/dept/getAll")
public List<Dept> getAll();
}
在controller中通过接口调用对应的方法就行
@RestController
public class DataController {
// 用@FeignClient注解声明的bean是启动时注入的,没有编译前编译器检查不到,所以会报错
@Autowired
private FeignClientService service;
@RequestMapping("/getData")
public String getData() {
return service.getData();
}
}
主启动类上加上注解
@EnableFeignClients(basePackages= {"com.zgq.springcloud"})
@ComponentScan("com.springcloud")
就可以启动了
访问时,Feign会根据@FeignClient注解上标明的服务名找到对应的服务,再找到对应的接口