SpringCloud框架搭建的项目如何实现一个模块调用另一个模块的服务

SpringCloud框架搭建的项目如何实现一个模块调用另一个模块的服务

简介

基于SpringCloud框架搭建的项目,不同模块之间是无法调用各自的服务的,但是经常我们需要使用这样的模式去开发,那么如何实现不同模块之间的服务调用呢?

准备

1.在需要调用其他模块服务的项目中创建一个package包,里面定义三个类,如下图

MemberClient可以随意命名,但是下面的两个尽量保持一致,其中三个类的代码分别是:

MemberClient:

package com.yuwan.qiniuvideo.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name="member")//book 是service id指明调用的是book这个服务里的接口,再往后所有有关book服务的接口调用都在这里面写
/*Feign 默认就有支持Ribbon 负载均衡,我们只需要不熟多个book微服务就可以了,客户端可以自动轮询选择调用*/
public interface MemberClient {
   
   

	@GetMapping("/selectMemberInfo")
	public RestResult getInfo(@RequestParam("id") Long id);
	
	//如果是 postmapping 的话接受参数 就是用@Requestbody 用map 接参  (@Requestbody Map reqest)
}

注意:

此时发现@FeignClient(name=“member”)中的@FeignClient注解爆红,那是因为没有导入jar包,导入如下jar包即可:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在MemberClient类中的@FeignClient(name=“member”),name属性对应的值就是被调用服务所在的模块,例如本文档是video模块调用member模块的服务,故name属性对应的是member,类中的@GetMapping("/selectMemberInfo")对应的就是被调用模块中的服务路径(服务的路径暴露在controller层即可),可以按照自己的要求去书写此服务内容。

MemberDTO:

package com.yuwan.qiniuvideo.client
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值