ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringBoot使用Nacos配置中心

2020-07-06 10:04:47  阅读:522  来源: 互联网

标签:SpringBoot spring 配置 nacos Nacos config cloud


注意:

1.配置文件格式设置为properties无法发布,js报错,可以设置为text格式
2.springboot项目的配置文件不能为application,要为bootstrap

还有项目发布必须先启动nacos,配置dataid,如果nacos比子系统后启动,再去配dataid等信息,动态刷新永远无法生效,这个也是比较坑的点

 

转:

 

Nacos(四):SpringCloud项目中接入Nacos作为配置中心

 

前言

通过前两篇文章:

相信大家已经对Nacos作为注册中心的基本使用已经有了一定的了解。

然而,Nacos远远不止于此,本文我们来看一下Nacos作为配置中心在SpringCloud中的使用

我的环境

  • Windows10
  • JDK8
  • SpringCloud:Finchley.RELEASE
  • SpringBoot:2.0.4.RELEASE
  • spring-cloud-alibaba-dependencies:0.2.2.RELEASE
  • Nacos-server:1.0.1

本文的项目Demo继续沿用之前文章中的聚合工程Nacos,若小伙伴还没有之前的环境,可至源码地址中下载

启动Nacos-Server

进入bin文件夹(目录:nacos-server-1.0.1\nacos\bin),直接双击执行startup.cmd文件,这里具体的启动细节就不再说明

新建配置

在Nacos-Server中新建配置,其中Data ID它的定义规则是:${prefix}-${spring.profile.active}.${file-extension}

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
  • spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置。
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

这里我创建Data Id 为nacos-config.yml的配置文件,其中Group为默认的DEFAULT_GROUP,配置文件的格式也相应的选择yaml,其内添加配置nacos.config=hello_nacos,如图所示

创建应用

1、在聚合工程Nacos下新建Module,创建一个名为nacos-config的子工程,其pom.xml文件内容如下

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <artifactId>Nacos</artifactId>
  7. <groupId>com.study.www</groupId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.larscheng.www</groupId>
  11. <artifactId>nacos-config</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>nacos-config</name>
  14. <description>Demo project for Spring Boot</description>
  15. <properties>
  16. <java.version>1.8</java.version>
  17. </properties>
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.cloud</groupId>
  21. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.springframework.cloud</groupId>
  25. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  26. </dependency>
  27. </dependencies>
  28. <build>
  29. <plugins>
  30. <plugin>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-maven-plugin</artifactId>
  33. </plugin>
  34. </plugins>
  35. </build>
  36. </project>

2、创建配置文件名为bootstrap.yml,注意是bootstrap.xxx,而不是application或者其他。原因如下

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

这里的配置文件类型可以根据个人习惯选择,我这里用的时yml类型,配置内容如下

  1.  
  2. spring:
  3. application:
  4. name: nacos-config
  5. cloud:
  6. nacos:
  7. discovery:
  8. server-addr: 127.0.0.1:8848
  9. config:
  10. server-addr: 127.0.0.1:8848
  11. file-extension: yml

可以看到必须可少的配置项spring.application.name

spring.cloud.nacos.discovery.server-addr指定注册中心的地址,如果你不需要注册该服务,也可以去掉该项,并删除discovery依赖

spring.cloud.nacos.config.server-addr指定配置中心的地址

file-extension指定配置中心中配置文件的格式

上面的配置是为了保证服务的正常注册和配置获取,以及配置DataID的正确性

3、创建对外接口来从nacos中读取配置,NacosConfigApplication.java修改如下

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. @RestController
  4. @RefreshScope
  5. public class NacosConfigApplication {
  6. public static void main(String[] args) {
  7. SpringApplication.run(NacosConfigApplication.class, args);
  8. }
  9. @Value("${nacos.config}")
  10. private String config;
  11. @RequestMapping("/getValue")
  12. public String getValue() {
  13. return config;
  14. }
  15. }

其中通过@Value注解,去读取key为nacosconfig的配置的值,并通过/getValue接口返回。

加入@RefreshScope注解,可以使当前类下的配置支持动态更新。

到此代码部分的工作已经完成

启动测试

  1. 保证Nacos-Server已经启动
  2. 检查配置文件是否已经添加
  3. 启动nacos-config项目

启动成功后在Nacos控制台中可以看到我们注册的服务

此时调用接口进行测试 http://127.0.0.1:8080/getValue ,可以看到返回结果

hello_nacos

此时说明已经成功读取到配置,下面我将Nacos-Server上的配置修改为hello_lars,看看能否动态更新

调用接口进行测试 http://127.0.0.1:8080/getValue ,返回结果如下

hello_lars

可以看到我通过Nacos-server的控制台进行配置的修改,客户端服务nacos-config也相应的进行热更新。

总结

通过上面的测试,可见Nacos做配置中心,在SpringCloud项目中,也可以做到无缝衔接,切换到Nacos可以说知识修改配置的问题,成本也很低

项目的其他配置不变,只需要指定配置中心地址,同时将配置文件外部管理。

本文源码https://github.com/larscheng/larscheng-learning-demo/tree/master/Nacos

参考

Nacos Spring Cloud



标签:SpringBoot,spring,配置,nacos,Nacos,config,cloud
来源: https://www.cnblogs.com/libin6505/p/13253308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有