对于A服务调用B服务接口
在A服务的pom文件中引入feign的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
前提是项目中已有spring-cloud-alibaba-dependencies依赖,可通过以下网址查看:
Spring Cloud Alibaba Reference Documentation (spring-cloud-alibaba-group.github.io)
启动类上添加@EnableFeignClients注解 开启Feign的功能
编写需要调用B服务的接口:
package cn.itcast.order.client;
import cn.itcast.order.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@FeignClient("userservice")
public interface UserClient {
@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);
}
说明:
A服务需要调用B服务的/user/{id}这个接口(与Controller层写接口方式类似)
服务名:userservice
请求方式:GET(@GetMapping)
请求路径::/user/{id}
请求参数:Long id (路径参数)@PathVariable("id")
接口返回值:User对象
在需要调用该接口时,注入UserClient的Bean,调用findById()方法即可
@Service public class OrderService { @Autowired private UserClient userClient; public Order queryOrderById(Long orderId) { //feign 实现远程调用 User user = userClient.findById(orderId); } }