day2 谷粒商城-更改配置文件依赖、nacos、Feign

本文档介绍了谷粒商城项目中如何更改配置文件、集成Nacos配置中心和使用Feign进行远程调用。涉及到spring-cloud-alibaba组件,如Nacos、Feign,并详细阐述了每个模块的配置步骤,包括数据库更改、模块命名、引入依赖以及Nacos的配置加载和命名空间管理。同时,还提及了网关的路由和过滤器功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gulimall-coupon

对应的数据库表是gulimall_sms,更改一下数据库名,模块名,运行,生成代码,替换main

并在coupon--pom.xml文件中引入common依赖。

删除掉resources下的src

新建application.yml文件,配置数据库源

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
server:
  port: 7000

 运行起来,看能否跑通。

 之后每个模块都类似。

会员模块gulimall_member---  gulimall_ums,表前缀是ums

 

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.56.10:3306/gulimall_ums
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
server:
  port: 8000 #记得更改端口号

 

order模块  ----gulimall_oms

#模块名
moduleName=order
#表前缀
tablePrefix=oms_

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.56.10:3306/gulimall_oms
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
server:
  port: 9000

ware ---gulimall_wms,重复上面的步骤

 spring-cloud-alibaba 

https://github.com/alibaba/spring-cloud-alibaba 

点击中文文档可以查看注册中心和配置中心的使用例子 

 

 每个模块添加nacos服务中心

 在启动类添加@EnableDiscoveryClient注解

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
    driver-class-name: com.mysql.cj.jdbc.Driver
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #注册nacos发现
  application:
    name: gulimall-coupon  #注册服务
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
server:
  port: 7000

先启动nacos服务,访问http://localhost:8848/nacos

用户名和密码:nacos 

假如会员服务调用优惠券服务,会员想要查看当前的会员领取到的所有优惠券,会员服务会先去注册中心,查找优惠券服务都在哪些信息服务器,会挑一台含有优惠券的服务器并返回信息给会员服务。会员服务发出请求给优惠券服务的服务器,优惠券服务响应信息会给会员服务。

使用远程调用--feign

* 1、想要远程调用别的服务
 *     1)、引入open-feign依赖
 *     2)、编写一个接口,告诉SpringCloud这个接口需要调用远程服务
            a.声明接口的每一个方法都是调用哪个远程服务的那个请求
 *      3)、开启远程调用功能

首先导入依赖,两个模块都有引入

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

member模块还引入loadbalancer

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

 

使用 @EnableFeignClients //开启远程调用功能

 测试

@RestController
@RequestMapping("member/member")
public class MemberController {
    @Autowired
    private MemberService memberService;
    @Autowired
    CouponFeignService couponFeignService;
    //测试会员的所有优惠券
    @RequestMapping("/coupons")
    public R test(){
         MemberEntity memberEntity = new MemberEntity();
         memberEntity.setNickname("张三");
        R memebercoupons = couponFeignService.memebercoupons();
        return R.ok().put("member",memberEntity).put("coupons",memebercoupons.get("coupons"));
    }

测试路径:  localhost:8000/member/member/coupons

 使用nacos配置中心

首先,修改 pom.xml 文件,引入 Nacos Config Starter。在common的pom.xml文件中加入依赖

 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 </dependency>

 在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据,在coupon模块中添加,bootstrap.properties优先于application先加载。

别给bootstrap.properties添加#的注释,会使实时配置失效,最后面也不能含有空格

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

spring.application.name=gulimall-coupon                     #当前模块名称
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #指定nacos配置中心的地址 

在application.properties中配置了

coupon.user.name=zhangsan
coupon.user.age=18

测试

@RefreshScope //动态刷新
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
    @Autowired
    private CouponService couponService;
    @Value("${coupon.user.name}")
    private  String name;
    @Value("${coupon.user.age}")
    private int age;
    //测试配置中心
    @RequestMapping("/test")
    public R test(){
     return R.ok().put("name",name).put("age",age);
    }

 在nacos的配置列表中添加可以实时显示配置的信息并发布,刷新页面会出现以下配置的值,Data ID的名称得是模块名.properties

 在common的pom.xml中加入bookstrap依赖

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.3</version>
        </dependency>

配置中心的配置优于文件配置 

 1)、命名空间:配置隔离;
 *      默认:public(保留空间);默认新增的所有配置都在public空间。
 *      1、开发,测试,生产:利用命名空间来做环境隔离。
 *         注意:在bootstrap.properties配置,需要使用哪个命名空间下的配置,使用以下配置指定。spring.cloud.nacos.config.namespace=命名空间ID


 *         spring.cloud.nacos.config.namespace=1b56944e-765d-4baf-9deb-f5a2fdc7f6ca

每个模块指定自己的命名空间,使用自己空间下的配置。
 *      2、每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
 *
 *  2)、配置集:所有的配置的集合
 *
 *  3)、配置集ID:类似文件名。
 *      Data ID:类似文件名
 *
 *  4)、配置分组:
 *      默认所有的配置集都属于:DEFAULT_GROUP【默认分组名称】;
 *      1111,618,1212【命名分组的名称】
 *
 * 项目中的使用:每个微服务创建自己的命名空间,使用配置分组区分环境,同一个模块的不同开发环境配置dev,test,prod
 *
 * 3、同时加载多个配置集
 * 1)、微服务任何配置信息,任何配置文件都可以放在配置中心中
 * 2)、只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可
 * 3)、@Value,@ConfigurationProperties。。。
 * 以前SpringBoot任何方法从配置文件中获取值,都能使用。
 * 配置中心有的优先使用配置中心中的,

 

 

 

 同时加载nacos中的多个配置。

比如抽离了多个配置放在dev组中,

在bookstrap.properties 

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=89c5cc8a-354b-4984-9e11-9d5958eec5c8
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true

spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true

spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true

注释掉原本的配置,localhost:7000/coupon/coupon/test ,数据正常出来

 网关

路由:客户端发出请求,由网关路由到指定的服务器,只要路由的断言为真就能匹配到相应服务

断言:断言相当于条件判断,设置请求的条件,如设置相应的请求头或参数

过滤器:请求和响应都有过滤

客户端发起请求,经过网关,网关开始使用Gateway Handler Mapping,判断是否能处理,能处理,就交给Gateway Web Handler再次处理,之后经过层层filter,服务器server响应,再经过层层filter,继续沿着原路返回。

新建一个网关模块

在网关模块加入common依赖 

application.properties,配置注册发现

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
server.port=88

在bootstrap.properties

配置nacos配置中心

spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=3496b915-96b9-43f6-8370-1336702bae9f

 启动类添加启动注册发现客户端功能

@EnableDiscoveryClient
@SpringBootApplication
public class GulimallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }

}

添加网关路由配置

spring:
  cloud:
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query= url,baidu
spring:
  cloud:
    gateway:
      routes:
        - id: 路由id
          uri: 路由地址
          predicates:  断言
            - Query= 参数,参数值

访问   http://localhost:88/?url=qq

安装vue

npm install vue-cli -g

搭建脚手架,在桌面创建一个文件夹,进入给目录,在地址栏敲入cmd,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值