一、Nacos 下载与初始化配置

本文使用1.2.0,下载地址:https://github.com/alibaba/nacos/releases

Nacos 单机模式支持持久化配置到 MySQL 数据库,修改 conf/application.properties 配置:

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://数据库地址:端口/数据库名?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=用户名
db.password=密码

然后在数据库执行 conf/nacos-mysql.sql 初始化数据库

Windows 环境下双击 bin/startup.cmd 启动 Nacos

二、Nacos 配置及在 Spring Cloud 中的使用

Nacos 可以根据三种模式区分不同环境下的配置:

  1. 根据 Data Id 和 profiles (spring.profiles.active)
  2. 根据 Group
  3. 根据 Namespace (命名空间)

本人认为根据 Namespace 区分不同环境下的配置应该更适用于实际项目,故本文以 Namespace 模式为例

2.1 新建命名空间

新增名字为 dev 的命名空间

2.2 新增配置

在 dev 命名空间新增配置,Data Id 为 service1.yml,Group 为 service1,配置格式为 YAML,内容为:

server:
port: 8070

2.3 在 Spring Cloud 中使用

添加依赖:

    <dependencies>
... <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency> ...
</dependencies> <dependencyManagement>
<dependencies>
... <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency> ...
</dependencies>
</dependencyManagement>

spring-cloud-alibaba-dependencies 是 Spring Cloud Alibaba BOM,包含了 Spring Cloud Alibaba 的所有依赖的版本,使用 Nacos, Sentinel 等时不用再指定版本

新建 Spring Cloud 项目,在 bootstrap.yml 新增配置:

spring:
application:
name: service1 cloud:
nacos:
config:
server-addr: 192.168.92.1:8848 # Nacos 地址与端口
namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba # 命名空间ID
group: service1
file-extension: yml

启动项目,可以看到项目使用的端口为在 Nacos 中配置的 8070 说明配置生效

2.4 扩展配置

有时我们想要将配置放置在不同的文件或者多个项目共用部分配置,则可以添加扩展配置

2.4.1 在 Nacos 添加配置

在 dev 命名空间新增配置,Data Id 为 greeting.yml,Group 为 common,配置格式为 YAML,内容为:

greeting: Hello, world!

在 dev 命名空间新增配置,Data Id 为 author.yml,Group 为 common,配置格式为 YAML,内容为:

author: karonda

2.4.2 Spring Cloud 配置

方法一:

spring:
application:
name: service1 cloud:
nacos:
config:
server-addr: 192.168.92.1:8848
namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba
group: service1
file-extension: yml
extension-configs[0]:
data-id: greeting.yml
group: common
refresh: true # 配置修改后是否自动更新
extension-configs[1]:
data-id: author.yml
group: common
refresh: true

方法二:

spring:
application:
name: service1 cloud:
nacos:
config:
server-addr: 192.168.92.1:8848
namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba
group: service1
file-extension: yml
extension-configs:
- data-id: greeting.yml
group: common
refresh: true
- data-id: author.yml
group: common
refresh: true

2.4.3 测试

@RefreshScope # 配置自动更新
@RestController
public class GreetingController { @Value("${greeting:}")
private String greetingStr;
@Value("${author:}")
private String authorStr; @RequestMapping("/greeting")
public String greeting() {
return greetingStr + " from " + authorStr;
}
}

访问 http://localhost:8070/greeting

参考:

  1. Nacos支持三种部署模式
  2. Nacos学习笔记(五)—— NacosConfig配置

Spring Cloud Alibaba 初体验(一) Nacos 配置中心的更多相关文章

  1. Spring Cloud Alibaba 初体验(二) Nacos 服务注册与发现 + 集成 Spring Cloud Gateway

    一.服务注册 添加依赖: <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>s ...

  2. Spring Cloud Alibaba 初体验(三) Nacos 与 Dubbo 集成

    一.新建项目 新建项目,只放置接口,用于暴露 Dubbo 服务接口 public interface GreetingService { String greeting(); } 二.provider ...

  3. Spring Cloud Alibaba基础教程:Nacos配置的多环境管理

    前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ...

  4. Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置

    前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ...

  5. Spring Cloud Config、Apollo、Nacos配置中心选型及对比

    Spring Cloud Config.Apollo.Nacos配置中心选型及对比 1.Nacos 1.1 Nacos主要提供以下四大功能 2.Spring Cloud Config 3.Apollo ...

  6. Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解

    前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式(Res ...

  7. Spring Cloud Alibaba 初体验(六) Seata 及结合 MyBatis 与 MyBatis-Plus 的使用

    一.下载与运行 本文使用 Seata 1.1.0:https://github.com/seata/seata/releases Windows 环境下双击 bin/seata-server.bat ...

  8. Spring Cloud Alibaba 初体验(四) Sentinel

    一.Sentinel 下载与运行 本文使用 Sentinel 1.7.1:https://github.com/alibaba/Sentinel/releases 使用自定义端口 8089 运行 Se ...

  9. Spring Cloud Alibaba 初体验(五) SkyWalking

    一.下载与运行 本文使用 SkyWalking 7.0.0:https://www.apache.org/dyn/closer.cgi/skywalking/7.0.0/apache-skywalki ...

随机推荐

  1. Java线程池原理及分析

    线程池是很常用的并发框架,几乎所有需要异步和并发处理任务的程序都可用到线程池. 使用线程池的好处如下: 降低资源消耗:可重复利用已创建的线程池,降低创建和销毁带来的消耗: 提高响应速度:任务到达时,可 ...

  2. Hill密码解密过程(Java)

    Hill密码是一种传统的密码体系.加密原理:选择一个二阶可逆整数矩阵A称为密码的加密矩阵,也就是这个加密体系的密钥.加密过程: 明文字母依次逐对分组,例如加密矩阵为二阶矩阵,明文就两个字母一组,如果最 ...

  3. XML转换成TXT行数据的Java程序

    ZKe ------------------- XML数据的一个块内的所有属性,转换成TXT文件的一行.众所周知XML文件是通过类似HTML的标签进行数据的定义如图所示 属性由id, article, ...

  4. 年轻人的第一个 Docker 应用,大大提高生产力!

    上一篇:年轻人的第一个 Spring Boot 应用! 哈哈,标题我抄了雷总的,不重要哦,重要的是 Docker 真的很年轻,虽然现在才不到 8 岁,但却是个冉冉升起的巨星,火得一塌糊涂. 这几年 D ...

  5. Effective Modern C++ ——条款6 当auto型别不符合要求时,使用带显式型别的初始化物习惯用法

    类的代理对象 其实这部分内容主要是说明了在STL或者某些其他代码的容器中,在一些代理类的作用下使得最后的返回值并不是想要的结果. 而他的返回值则是类中的一个容器,看下面的一段代码: std::vect ...

  6. Mysql分区、分表、分库

    1.MySQL分区 一般情况下我们创建的表对应一组存储文件,使用MyISAM存储引擎时是一个.MYI和.MYD文件,使用Innodb存储引擎时是一个.ibd和.frm(表结构)文件. 当数据量较大时( ...

  7. python3:文件读写+with open as语句(转)

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  8. TCP回射客户服务器模型(02 设置套接字选项、处理多并发)

    int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);  //设置套接字选项 ...

  9. 为什么关不掉所有的OSD

    前言 碰到一个cepher问了一个问题: 为什么我的OSD关闭到最后有92个OSD无法关闭,总共的OSD有300个左右 想起来在很久以前帮人处理过一次问题,当时环境是遇上了一个BUG,需要升级到新版本 ...

  10. 12种不宜使用的Javascript语法 ---阮一峰

    原文链接-阮一峰博客 1. == Javascript有两组相等运算符,一组是==和!=,另一组是===和!==.前者只比较值的相等,后者除了值以外,还比较类型是否相同. 请尽量不要使用前一组,永远只 ...