1.添加maven依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.启动类添加注解@EnableFeignClients(basePackages=“com.avisoft.*”),扫描该包下所有使用注解@FeignClient定义的feign客户端;
3.Web层:
@RestController
@RequestMapping("/cargo")
public class CargoController {
private final DepartmentFeign departmentFeign;
@Autowired
public CargoController(DepartmentFeign departmentFeign) {
this.departmentFeign = departmentFeign;
}
@RequestMapping(value = "/getDepartmentName")
public String getDepartmentName(){
return departmentFeign.getName();
}
}
4.服务调用方:
@FeignClient("service-department")
public interface DepartmentFeign {
@RequestMapping("/department/getName")
@ResponseBody
String getName();
}
5.服务提供方:
@RestController
@RequestMapping("/department")
public class DepartmentController {
private final DepartmentService departmentService;
@Autowired
public DepartmentController(DepartmentService departmentService) {
this.departmentService = departmentService;
}
@RequestMapping("/getName")
public String getName (){
return departmentService.getName();
}
}
6.测试,访问http://localhost:8081/cargo/getDepartmentName,返回成功。
注意:
1.服务的调用方的请求路径和提供方保持一致,方法名可以不同,但是参数列表需要匹配。
2.如果在服务提供方加了server.content.path那么会导致路径不匹配,服务调用出错,可以选择删掉这个path或者在服务调用方的请求路径上加上你的path。