版本选择
这里要注意的是其他模块也要改springboot的版本,都为2.3.2.rekease
Nacos
1、启动Nacos
2、将微服务注册到 nacos 中
mall-ommon模块进行引入
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
这样所有的引入common模块的其他模块就都有这个服务发现了,接下来还需要两步
- 在需要将微服务加到注册中心的启动类上加注解@EnableDiscoveryClient
- 改模块配置文件
spring: cloud: nacos: discovery: server-addr: localhost:8848 #nacos地址
3、测试
Feign
它的目的就是让远程调用更加简单,Feign提供了HTTP请求的模板。通过写接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息
例如:想要获取当前会员领取到的所有优惠券。先去注册中心找优惠券服务, 注册中心调一台优惠券服务器给会员,会员服务器发送请求给这台优惠券服务器,然后对方响应。
下面我们看它是怎么用的:
1、引入open-feign
前期建模块的时候我们已经引入过了
2、在调用方的主函数头上标注注解打开远程调用,并指定远程调用接口的位置
@SpringBootApplication @EnableDiscoveryClient //标注启动服务发现 @EnableFeignClients(basePackages = "com.caq.mall.member.feign") public class MallMemberApplication { public static void main(String[] args) { SpringApplication.run(MallMemberApplication.class, args); } }
3、编写远程调用接口
- 通过@FeignClient("mall-coupon")指定远程调用哪个微服务
- 方法为要调用微服务功能的的签名部分(路径要写全)
那么当我们调用这个接口的方法时,他就会去注册中心中找远程服务mall-coupon所在位置,最后调用/coupon/coupon/member/list这个请求对应的方法
package com.caq.mall.member.feign; import com.caq.common.utils.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; @FeignClient("mall-coupon") public interface CouponFeignService { @RequestMapping("/coupon/coupon/member/list") public R memberCoupons(); }
4、测试
被调用方:为优惠卷微服务新添加一个功能,这个功能就是访问这个请求时会返回优惠卷的信息以List的形式
调用方:注入服务,写一个请求来获取用户信息和优惠卷信息
结果如下: