(三)SpringCloud-Alibaba-Nacos配置中心

1、在项目中引入Nacos配置中心

在启动示例进行演示之前,我们先了解一下 Spring Cloud 应用如何接入 Nacos Config。 注意 本章节只是为了便于您理解接入方式,本示例代码中已经完成接入工作,您无需再进行修改。

  1. 首先,修改 pom.xml 文件,引入 Nacos Config Starter。

     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>
  2. 在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据

    spring.application.name=ttmall-coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
  3. 在应用的 src/main/resources/application.properties配置文件中添加如下测试配置数据

    coupon.user.name=zhangsan
    coupon.user.age=11
  4. 完成上述步骤后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用 @Value 注解来将对应的配置注入到 SampleController 的 userName 和 age 字段。并编写测试方法打印 userName 和 age 。

    RestController
    @RequestMapping("coupon/coupon")
    public class CouponController {
    @Autowired
    private CouponService couponService;

    @Value("${coupon.user.name}")
    String name;

    @Value("${coupon.user.age}")
    int age;

    @RequestMapping("/member/testNacosConf")
    public R testNacosConf(){
    return R.ok().put("name",name).put("age",age);
    }
    }

    启动服务,并访问测试方法url:http://localhost:7000/coupon/coupon/member/testNacosConf 

    结果如下:

2、使用Nacos配置中心动态的获取配置信息

  1. 在 Nacos 版本自带控制台中新建如下配置:

     dataId 为 nacos-config-example.properties
     group 为 DEFAULT_GROUP
     
     内容如下
     
     coupon.user.id=
     coupon.user.name=
     coupon.user.age=

    2、在controller上添加注解@RefreshScope 可以从nacos配置中心来动态刷新配置

     重新访问测试类方法,效果如下:

           

3、Nacos配置中心 使用进阶

  3.1、命名空间:配置隔离

  默认:public(保留空间),默认所有的新增配置都在public空间下

  场景一:实际开发中,可以有开发、测试、生产 等空间,可以利用命名空间来做环境隔离

      1、新建如下命名空间

                      

      2、在配置列表中选择dev命名空间,添加如下配置

                     

                   

      3、在src/main/resources/bootstrap.properties 中添加nacos命名空间配置 

spring.cloud.nacos.config.namespace=cdbef139-c55c-4787-9906-853a0b5e463b

 

     其中namespace的值从这里获取

                 

     4、重启服务,访问测试类方法,效果如下:

    

  场景二:每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的配置

           

     

     

     重启服务,访问测试类方法,效果如下:

     

  3.2、配置集

      一组相关或者不相关的配置项的集合称为配置集,一个配置文件通常就是一个配置集

  3.3、配置集ID

      类似于配置文件名,即Data ID(就是配置的名字加类型)

  3.4、配置分组

      默认所有的配置集都属于DEFAULT_GROUP组。可以根据某个时期,或者某个事件等进行分组,例如电商可以根据双十一,618的优惠策略来修改分组。

     使用场景:每个微服务创建自己的命名空间,使用配置分组来区分环境:dev   test   prod

      1、在命名空间coupon 下创建两个配置,配置分组分别为:dev  test ,配置内容如下

      

      

      

      2、在coupon服务配置文件bootstrap.properties 中新增如下配置:

spring.cloud.nacos.config.group=dev

     

     3、重启服务,访问测试类方法,效果如下:

    

  3.5、使用不同的配置分组加载多个配置集 

     使用场景:在实际开发中,会有多个配置文件需要加载,我们需要将不同的配置文件搭配命名空间和配置分组来使用

      1、我们将application.yml中的配置拆分成如下几个配置文件进行测试

      

      

      

 

      

      

 

       2、在coupon服务配置文件bootstrap.properties 中新增如下配置: 

spring.cloud.nacos.config.ext-config[0].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[2].refresh=true

      

      3、将原来系统配置文件application.yml中的配置全部注释

      

     4、重启服务,访问测试类方法,效果如下:

       

 

     

  

 

posted @ 2022-03-25 10:18  LZ1024  阅读(82)  评论(0编辑  收藏  举报