第164天学习打卡(项目 谷粒商城6 加载多配置集 API网关)

Posted doudoutj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第164天学习打卡(项目 谷粒商城6 加载多配置集 API网关)相关的知识,希望对你有一定的参考价值。

加载多配置集

image-20210621172805734

image-20210621173012581

image-20210621173201831

把配置中心配置的内容配置到bootstrap.properties中。

image-20210621182955987

bootstrap.properties

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=f6d0dca7-036f-40a6-ad54-a2dddc96fdf2
#spring.cloud.nacos.config.group=prod
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

把gulimall-coupon重启后发现,加载的是默认分组里面的内容, 我们的配置中没有默认文件,就会去加载配置文件中的内容(也就是配置中心没有的就读取配置文件的)

Ignore the empty nacos configuration and get it based on dataId[gulimall-coupon] & group[DEFAULT_GROUP]
2021-06-21 18:32:42.288  WARN 17696 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Ignore the empty nacos configuration and get it based on dataId[gulimall-coupon.properties] & group[DEFAULT_GROUP]
2021-06-21 18:32:42.291  INFO 17696 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-gulimall-coupon.properties,DEFAULT_GROUP'}, B

image-20210621183735567

这里是读取配置中心有的内容

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=f6d0dca7-036f-40a6-ad54-a2dddc96fdf2
spring.cloud.nacos.config.group=prod
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

image-20210621184329894

/**
 * 1.如何使用Nacos作为配置中心统一管理配置
 * 1)引入依赖
 * <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *         </dependency>
 *  2)创建一个bootstrap.properties
 *  spring.application.name=gulimall-coupon
 *  spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *
 *  3) 需要给配置中心默认添加一个数据集(Data Id) gulimall-coupon.properties,  默认规则是  应用名.properties
 *  4)给 应用名.properties 添加任何配置
 *  5)动态获取配置
 * @RefreshScope :动态获取并刷新配置
 * @Value("${配置项的名}") : 获取到配置
 * 如果配置中心和当前应用的配置文件都配置了相同的项,优先使用配置中心的配置
 * 2.细节
 * 1)命令空间:配置隔离
 *    默认: public(保留空间) 默认新增的所有配置都在public空间
 *    1.开发 测试 生产:利用命名空间来做环境隔离
 *    注意: 在bootstrap.properties中配置上需要使用哪个命名空间下的配置
 *    spring.cloud.nacos.config.namespace=a584e906-7a3c-43c2-bccf-f5a2ec26a2c7
 *    2.每一个微服务之间相互隔离配置,每一个微服务都创建自己的命名空间,只加载自己命令下的所有配置
 *
 * 2)配置集  :所有配置的集合
 * 3)配置集ID :类似文件名、
 *    Data ID :文件名
 * 4)配置分组
 *    默认所有的配置集都属于:DEFAULT_GROUP
 *
 *
 *    每个微服务创建自己的命名空间,使用配置分组区分环境dev  test  prod
 *
 * 3.同时加载多个配置集
 * 1) 微服务任何配置信息,任何配置文件都可以放在配置中心中
 * 2)只需要在bootstrap.properties说明加载配置中心哪些配置文件即可
 * 3) @Value @ConfigurationProperties
 * 以前SpringBoot任何方法从配置文件中获取值,都能使用
 * 配置中心有的优先使用配置中心的
 *
 *
 *
 *
 *
 *
/

API网关

image-20210621185253754

image-20210621185322308

Gateway

1.简介

网关作为流量的入口,常用功能包括路由转发、权限校验,、限流控制等。而springcloud gateway作为SpringCloud官方推出的第二代网关框架,取代了Zuul

image-20210621185638097

网关提供API全托管服务,丰富的API功能,辅助企业管理大规模的API,以降低管理成本和安全风险,包括协议适配、协议转发、安全策略、防刷、流量、监控日志等功能。

Spring Cloud Gateway旨在提供一种简单而有效的方式来对API进行路由,并为他们提供切面,例如:安全性,监控/指标和弹性等。

新建一个spring模块

image-20210621191109837

image-20210621191225202

image-20210621191446780

在pom.xml中添加依赖

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

配置

image-20210621193113742

为网关创建一个命名空间

image-20210621192423543

image-20210621192848312

image-20210621193311610

遇到的错误

Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway at this time.
Consider defining a bean of type 'org.springframework.http.codec.ServerCodec    

解决办法 在pom.xml中进行配置

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-webflux</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

遇到的错误

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

解决办法在application.yml中进行配置

#spring:
#  application:
#    name: gulimall-gateway
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://数据库连接地址:3306?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver

注意 bootstrap是在上下文加载之前获取配置中心的配置中心后加载,application里的配置可以全部到配置中心去配置,bootstrap.yml文件会优于application.yml加载

参照官方文档进行application.yml的配置Spring Cloud Gateway

参照官方文档的内容

image-20210621204627931

未能测试成功

image-20210621223140380

解决办法

1.在guilimall-gateway的pom.xml中去掉gulimall-common的依赖只导入下面两个依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

image-20210622100517673

image-20210622100556874

2.把在application.properties中配置的url去掉

image-20210622100737185

image-20210622100910233

image-20210622100942986

页面访问:

image-20210622101035077

B站学习网址:全网最强电商教程《谷粒商城》对标阿里P6/P7,40-60万年薪_哔哩哔哩_bilibili

以上是关于第164天学习打卡(项目 谷粒商城6 加载多配置集 API网关)的主要内容,如果未能解决你的问题,请参考以下文章

第172天学习打卡(项目 谷粒商城 14 三级分类 配置网关路由和路径重写)

第198天学习打卡(谷粒商城 项目 排错)

第160天学习打卡(项目 谷粒商城 2)

第163天学习打卡(项目 谷粒商城5 SpringCloud Alibaba Feign Nacos)

第196天学习打卡(项目 谷粒商城38 商品新增vo抽取)

第189天学习打卡(项目 谷粒商城31 平台属性规格修改 )