这个过程总共四个角色:服务接口、服务提供方、Eureka注册中心 和 服务消费者(采用Feign)。
过程我总结为:
- 服务提供者实现服务接口,并向注册中心注册服务
- 服务消费者在Controller层获取到接口对象departmentClientService,直接完成消费(Feign)
- 如果采用Rest+Ribbon,则消费者需要在Controller标明服务名路径(REST)
我这个错误的原因出在,服务接口的路径和服务提供者的路径不一致。
其余配置如下:
1. 服务接口(springcloud-api 模块)
@Component
@FeignClient(name = "SPRINGCLOUD-PROVIDER-DEPARTMENT")
@RequestMapping("/provider/department")
public interface DepartmentClientService {
@RequestMapping(value = "/get/{id}",method = RequestMethod.GET)
public Department queryById(@PathVariable("id") Long id);
@RequestMapping(value = "/get/list",method = RequestMethod.GET)
public List<Department> queryAll();
@RequestMapping(value = "/add",method = RequestMethod.POST)
public boolean addDepartment(Department department);
}
2. 服务提供者
Controller层:
@RestController
@RequestMapping("/provider/department")
public class DepartmentController {
@Autowired
private DepartmentService departmentService;
//得到一些配置的信息,得到具体的服务
@Autowired
private DiscoveryClient discoveryClient;
@PostMapping