开发环境
开发工具:IDEA 2021.3.2
JDK版本:JDK1.8
Maven版本:Maven3.8
SpringCloud版本:Hoxton.SR12
SpringCloudAlibaba版本:2.2.7.RELEASE
SpringBoot版本:2.3.12.RELEASE
Nacos版本:2.0.3
准备Nacos
Nacos官方文档(推荐阅读)
下载安装包(下载速度慢,不推荐)
①GitHub下载nacos2.0.3安装包
下载源码(推荐)
①根据Nacos官方文档,首先克隆源码(github太慢,使用gitee Nacos镜像)
# -b 后面带的是nacos版本 git clone -b 2.0.3 https://gitee.com/mirrors/Nacos.git
②克隆完之后,执行以下命令构建项目
cd nacos/ mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
③构建完项目之后,进入distribution\target\distribution\target\nacos-server-2.0.3\nacos\bin目录,下打开cmd,执行 startup.cmd -m standalone 命令启动nacos-server
cd distribution\target\nacos-server-2.0.3\nacos\bin startup.cmd -m standalone
⑤浏览访问http://localhost:8848/nacos/index.html,登录客户端默认账号密码都是nacos
创建项目
创建spring cloud项目
创建子模块
①创建maven子模块,命名为cloud-provider-nacos-config8011
②导入依赖
<dependencies> <!--nacos配置中心 依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos注册与发现中心 依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--spring boot依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
③创建bootstrap.yml配置文件
server: port: 8011 spring: application: name: cloud-provider-nacos-config cloud: nacos: #注册与发现中心 discovery: server-addr: 127.0.0.1:8848 #配置中心 config: server-addr: 127.0.0.1:8848 prefix: ${spring.application.name} file-extension: yaml #配置文件格式(只支持yaml和properties)
④创建application.yml配置文件
spring: profiles: active: dev
⑤创建启动类,添加@EnableDiscoveryClient注解
@EnableDiscoveryClient @SpringBootApplication public class ProviderNacosConfig8011 { public static void main(String[] args) { SpringApplication.run(ProviderNacosConfig8011.class, args); } }
⑥创建controller,添加@RefreshScope注解
@RefreshScope @RestController @RequestMapping("provider") public class ProviderController { // nacos配置文件里面的info的值 @Value("${info}") private String info; @GetMapping("getInfo") public String getInfo() { return info; } }
⑦浏览器打开http://localhost:8848/nacos/index.html#/login,登录客户端,添加配置
⑧新建配置,根据Nacos官方文档中给的的Data ID的完整格式${prefix}-${spring.profiles.active}.${file-extension},填写Data ID
⑨填写配置内容并发布
info: cloud-provider-nacos-config-8011
测试
启动Nacos注册中心
启动cloud-provider-nacos-config8011
测试
①浏览器访问http://localhost:8011/provider/getInfo,获取配置文件中的info的值
②修改info的值
info: cloud-provider-nacos-config-修改之后的值
③再次访问http://localhost:8011/provider/getInfo,获取info的值
总结
Nacos-config实现了获取配置文件和自动刷新的功能。把Spring Cloud Config的获取配置文件和Spring Cloud Bus的刷新配置文件两个功能融合在了一起,中间还省了发送请求来刷新配置文件的步骤。