springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕

0、补充 springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
文章图片

1、需求

  • 如果我有这么一个请求:我想要gitee中的配置改了之后,我程序yml中的配置也可以跟着相应产生变化,利用原生的方式怎么做?一般做法如下:
    • springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
      文章图片
  • 而有了SpringCloud-alibab的config配置管理之后,就方便得多了,具体操作马上演示
2、创建配置 springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
文章图片

springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
文章图片

然后选择发布即可
3、快速上手 3.1)、依赖
  • 依赖管理
spring-boot-parent org.springframework.boot2.3.12.RELEASE

  • 项目需要的依赖
org.springframework.boot spring-boot-starter-web com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-alibaba-dependencies2.2.6.RELEASE pom import org.springframework.cloud spring-cloud-dependencies Hoxton.SR12 pom import

3.2)、编写yml配置
spring: application: name: ALIBABA-PUBLISHERcloud: nacos: server-addr: 162.14.66.60:8848# 代表服务端的地址 discovery: server-addr: ${spring.cloud.nacos.server-addr} config: file-extension: yml# 文件后缀名 必须配置这个config中还有其他配合,如:命名空间....按需要直接配置即可 group: DEFAULT_GROUP profiles: active: dev# 文件拓展名这个必须配置,对应application-dev.yml中的dev.....# 如上配置的意思: #通过 server-addr这个地址,找到ALIBABA-PUBLISHER-dev.yml配置文件 #注:文件格式必须是 xxxxx-dev / test.yml / 或者其他后缀名,即:必须有拓展名

springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
文章图片

3.3)、编写启动类
package cn.zixieqing; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @ClassName PublisherApplication * @Author ZiXieQing * @Date 2021/12/7 * Version 1.0 **/@SpringBootApplication @EnableDiscoveryClient public class PublisherApplication {public static void main(String[] args) { SpringApplication.run(PublisherApplication.class, args); } }

springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
文章图片

3.4)、编写服务
package cn.zixieqing.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @ClassName ProvideService * @Author ZiXieQing * @Date 2021/12/7 * Version 1.0 **/@RestController @RefreshScope// 同步nacos中配置做了修改,这里也会同步更新 @RequestMapping("/service") public class ProvideService {@Value("${server.port}") private String port; @GetMapping("/provider") public String provider() {System.out.println(port); return "你要结果,那老衲就给你一个结果嘛!" + "=== 当前端口为:==>" + port; } }

springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
文章图片

3.5)、运行效果如下
springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
文章图片

但是:我改了nacos中的配置呢?
  • springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
    文章图片

  • 再次发起请求
    • springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕
      文章图片

    • 【springcloud|springcloud - alibaba - 3 - 整合config - 更新完毕】可见:自动刷新了,这比springcloud的config强大多了,爽得很

    推荐阅读