SpringCloud Alibaba微服务 | 您所在的位置:网站首页 › springcloud微服务架构搭建 › SpringCloud Alibaba微服务 |
下载并安装启动nacos
1、下载nacos 下载地址:https://github.com/alibaba/nacos/releases/tag/1.4.2 我们选择windows版本 我们再重新启动 1、引入nacos依赖 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery ${spring-cloud-alibaba.version}2、创建application.yml配置文件和启动类并引入nacos 搭建微服务工程 在上一篇文章 springcloud alibaba微服务工程搭建(保姆级) 项目结构 在application.yml文件中添加nacos相关配置 server: port: 9090 spring: application: name: mdx-shop-user cloud: nacos: discovery: server-addr: localhost:8848启动项目 已经注册成功,查看nacos服务 2、命名空间 我们新建一个命名空间,可以将服务注册到这个命名空间下,比如同一团队中我们有很多开发人员连接一个nacos,我们都在本地启动user服务,这个时候导致启动了多个user实例,在本地调试中可能会出现问题,所以我们创建一个命名空间,也可以本地一个命名,测试一个命名,生产一个命名这样随意分配都可以 启动项目 此时服务已经注册到了mdx的命名空间下 我们可以把项目中的一些开关等有可能在线上更改的配置放到nacos的统一配置中心,更改配置不用重新的上线下线服务,极大的降低了成本 1、添加配置中心依赖 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ${spring-cloud-alibaba.version}2、创建bootstrap.properties配置文件 bootstrap文件会在项目启动后第一个被加载 在配置文件中添加如下配置 server-addr:nacos地址 extension-configs: 扩展配置,支持配置多个配置文件 data-id: 配置文件的文件名称加后缀 group:配置文件的组,默认是DEFAULT_GROUP refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的 file-extension: 配置内容的数据格式,配置文件的格式,一般为properties 和 yaml namespace: 命名空间 spring.application.name=mdx-shop-user spring.cloud.nacos.config.server-addr=localhost:8848 spring.cloud.nacos.config.extension-configs[0].data-id=mdx-shop-user.yaml spring.cloud.nacos.config.extension-configs[0].group=shop spring.cloud.nacos.config.extension-configs[0].refresh=true spring.cloud.nacos.config.file-extension=yml spring.cloud.nacos.config.namespace=mdx spring.cloud.nacos.config.group=shop3、在nacos平台上创建配置文件映射相关 在mdx命名空间下新建配置 dataId和group要和配置文件上的对应,并且我们增加一个测试的配置,然后发布 接下来测试一下,我们新建一个HelloWordController作为测试接口 mdx-shop-user.test.userId 这个配置是我们在配置中心加的配置,本地的项目中是没有的 @RestController @RequestMapping("/user") public class HelloWordController { @Value("${mdx-shop-user.test.userId}") private String userId; @GetMapping("getUserConfigTest") public String getUserConfigTest(){ return userId != null ? userId : "未获取到配置"; } }启动项目 然后发现报错了,找不到相关配置,导致项目启动失败 spring cloud2.4之后的源码: package org.springframework.cloud.util; public abstract class PropertyUtils { public static boolean bootstrapEnabled(Environment environment) { return (Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, false) || MARKER_CLASS_EXISTS; } }在spring cloud2.4之后将bootstrap.enabled设置为false 我们需要在pom文件中重新添加bootstrap的依赖 org.springframework.cloud spring-cloud-starter-bootstrap 3.0.2重新启动项目 访问浏览器测试 http://localhost:9090/user/getUserConfigTest 5 @RefreshScope注解 配置动态刷新 SpringCloud新增了一个自定义的作用域:refresh(可以理解为“动态刷新”),同样用了一种独特的方式改变了Bean的管理方式,使得其可以通过外部化配置(.properties)的刷新,在应用不需要重启的情况下热加载新的外部化配置的值。 具体实现大家可以看一下这篇文章 https://blog.csdn.net/JokerLJG/article/details/120254643 我们来测试一下,在HelloWordController类上增加@RefreshScope注解,重启项目 先来访问一下这个接口 http://localhost:9090/user/getUserConfigTest 获取到的值为 mdx123456 创作不易,点个赞吧👍 最后的最后送大家一句话 白驹过隙,沧海桑田 与君共勉 项目搭建请看上一篇文章 springcloud alibaba微服务工程搭建(保姆级) 下一篇文章 springcloud alibaba微服务 – openfeign的使用(保姆级) 获取完整项目源码请关注下方公众号或者微信搜索 最后一支迷迭香 |
CopyRight 2018-2019 实验室设备网 版权所有 |