谷粒商城整合SpringCloudAalibaba相关组件(Nacos,Feign)

迷南。 2023-01-19 09:46 22阅读 0赞

目录

      • 一. 谷粒商城整合Nacos
        • 1.1 导入Nacos依赖
        • 1.2 下载Nacos-Server
        • 1.3 配置文件中配置服务的发现
        • 1.4 服务的注册
        • 1.5 谷粒商城整合Nacos配置中心
      • 二. 谷粒商城整合OpenFeign
        • 2.1 导入OpenFeign依赖
        • 2.2 编写一个接口,让SpringCloud知道此接口需要调用远程服务
        • 2.3 开启远程调用的功能
        • 2.4 测试远程调用的功能

一. 谷粒商城整合Nacos

1.1 导入Nacos依赖

  1. <!--nacos服务与注册发现-->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  5. </dependency>

1.2 下载Nacos-Server

服务注册连接的中间件,方便观察服务是否注册:下载解压至本地即可:
Nacos-Server
管理员启动startup.cmd即可
在这里插入图片描述

1.3 配置文件中配置服务的发现

哪个服务需要被发现,就在哪个配置文件下配置:

  1. # nacos服务的注册发现
  2. spring:
  3. cloud:
  4. nacos:
  5. discovery:
  6. server-addr: 127.0.0.1:8848

1.4 服务的注册

在启动类上配置注解@EnableDiscoveryClient开启服务的发现
之后启动服务访问localhost:8848出现服务注册可视化界面,输入账号与密码都是nacos
出现服务名说明注册成功,如下图所示:
在这里插入图片描述

注意你用的SpringBoot的版本必须适应Nacos依赖否则会报错!!!

1.5 谷粒商城整合Nacos配置中心

引入依赖

  1. <!--nacos做配置中心-->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  5. <version>2.1.2.RELEASE</version>
  6. </dependency>

修改配置文件bootstrap.properties

  1. # 配置中心名称
  2. spring.application.name=gulimall-coupon
  3. # 配置中心地址
  4. spring.cloud.nacos.config.server-addr=127.0.0.1:8848

实时配置更新

修改配置文件后,实现实时配置更新,将文件配置到配置中心即可如下图所示:

在这里插入图片描述
修改之后配置文件就会优先使用配置中心中的文件了,不过我们需要在控制类中加上@RefreshScope实时刷新的注解。

二. 谷粒商城整合OpenFeign

使用SpringCloudAalibaba提供的Feign来实现远程的调用,如果A模块要调用B模块则要在A中引入依赖:

2.1 导入OpenFeign依赖

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-openfeign</artifactId>
  4. </dependency>

2.2 编写一个接口,让SpringCloud知道此接口需要调用远程服务

比如有如下接口需要调用远程服务(即会员服务调用优惠券服务,就需要在会员服务中声明接口)

  1. @FeignClient("gulimall-coupon")
  2. public interface CouponFeignService {
  3. @RequestMapping("/coupon/coupon/member/list")
  4. public R memberCoupons();
  5. }

@FeignClient("gulimall-coupon")用来声明服务名知道要去调用哪个,然后将调用远程的接口签名写全即可;

2.3 开启远程调用的功能

使用注解@EnableFeignClients标注在调用服务服务的启动类上并指定全包名即可

  1. @MapperScan("com.atguigu.gulimall.member.dao")
  2. @EnableFeignClients("com.atguigu.gulimall.member.feign")
  3. @EnableDiscoveryClient
  4. @SpringBootApplication
  5. public class GulimallMemberApplication {
  6. public static void main(String[] args) {
  7. SpringApplication.run(GulimallMemberApplication.class, args);
  8. }
  9. }

2.4 测试远程调用的功能

MemberController.java中测试:

  1. @RequestMapping("/coupons")
  2. public R test(){
  3. MemberEntity memberEntity = new MemberEntity();
  4. memberEntity.setNickname("ZS");
  5. R memberCoupons = couponFeignService.memberCoupons();
  6. return R.ok().put("member", memberEntity).put("coupons",memberCoupons.get("coupons"));
  7. }

服务调用成功:

  1. {
  2. "code": 0,
  3. "coupons": [
  4. {
  5. "id": null,
  6. "couponType": null,
  7. "couponImg": null,
  8. "couponName": "滿100減去20",
  9. "num": null,
  10. "amount": null,
  11. "perLimit": null,
  12. "minPoint": null,
  13. "startTime": null,
  14. "endTime": null,
  15. "useType": null,
  16. "note": null,
  17. "publishCount": null,
  18. "useCount": null,
  19. "receiveCount": null,
  20. "enableStartTime": null,
  21. "enableEndTime": null,
  22. "code": null,
  23. "memberLevel": null,
  24. "publish": null
  25. }
  26. ],
  27. "member": {
  28. "id": null,
  29. "levelId": null,
  30. "username": null,
  31. "password": null,
  32. "nickname": "ZS",
  33. "mobile": null,
  34. "email": null,
  35. "header": null,
  36. "gender": null,
  37. "birth": null,
  38. "city": null,
  39. "job": null,
  40. "sign": null,
  41. "sourceType": null,
  42. "integration": null,
  43. "growth": null,
  44. "status": null,
  45. "createTime": null
  46. }
  47. }

发表评论

表情:
评论列表 (有 0 条评论,22人围观)

还没有评论,来说两句吧...

相关阅读