1.引入Fegin依赖,提供远程调用功能
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
该依赖在项目创建时,就已经导入了。
2.创建一个远程服务的包,同时编写远程服务接口
比如:webshop-member 服务要调用 webshop-order 接口获取订单详情
- 先创建一个专门用来存放调用远程服务的包fegin
- 编写接口类
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.webshop.common.utils.R;
@FeignClient("webshop-order")//要调用的服务名
public interface OrderService {
//要远程调用方法的完整签名
@RequestMapping("/order/order/info/{id}")
R info(@PathVariable("id") Long id);
}
这样就告诉了Spring Cloud这个接口的这个方法是要调用哪个服务的哪个接口。
- 在 webshop-member 服务的controller类中加入接口,注入新创建的远程接口调用类,调用其方法。
@RestController
@RequestMapping("member/member")
public class MemberController {
@Autowired
private MemberService memberService;
@Autowired
private OrderService orderService;
//远程调用接口
@GetMapping("/order/{id}")
public R getOrderInfo(@PathVariable Long id) {
R order = orderService.info(id);
return R.ok().put("MemberName","webshop").put("orderInfo",order);
}
//...
}
- 在启动类处,开启远程调用功能
@EnableFeignClients(basePackages = {"org.webshop.member.feign"}) //远程接口包路径
-
分别启动服务:webshop-order、webshop-member
-
远程服务调用成功。接下来如果有其他服务需要互相调用,就可参照以上步骤进行编码。