Spring Cloud Alibaba入门:Nocas配置中心(入门)

1. 环境准备

1.1 搭建Nacos环境

  搭建Spring Cloud Alibaba环境需要先Nacos环境的支持,Nacos是Spring Cloud Alibaba的核心组件,具体的安装方法可以参考以下两篇文章:
  1.  《Nacos单机模式应用》
  2.  《Nacos集群模式部署》

1.2 使用Nacos创建配置文件

1.2.1 创建命名空间(可略过)

为了更好的贴合实际使用场景,我们先创建命名空间,使用默认命名空间(public)的可略过

1.2.2 权限控制(可略过)

为了更好的贴合实际使用场景,我们先进行权限管理,使用默认用户nacos可略过

1.2.2.1 创建用户

权限控制 —> 用户列表 —> 绑定角色

1.2.2.2 创建角色

权限控制 —> 角色管理 —> 创建用户

1.2.2.3 权限管理

权限控制 —> 权限管理 —> 添加权限

1.2.3 配置管理(重点关注)

权限控制 —> 配置列表 —> 选中 命名空间 —> 新增配置信息

编辑配置信息

创建成功,返回

 

2. 项目准备

  新建子项目qfx-nacos-config,端口设置为8050

3. 引入Nacos配置中心依赖

 

编辑pom.xml文件

<dependencies>
    <!-- 1.引入Nacos配置中心依赖 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
</dependencies>

 4. 编辑配置文件


4.1 bootstrap.yml与application.yml加载执行顺序:

        1. bootstrap.yml(bootstrap.properties)先于application.yml(application.properties)加载
        2. bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
  3. application.yml(application.properties)应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等

4.2 编辑Springboot配置文件application.yml 

server:
  port: 8050
spring:
  application:
    # 应用名称(Nacos会将该名称当做服务名称,同时也是配置管理中默认的Data ID)
    name: nacos-config-service
  profiles:
    # 运行环境(这里对应Nacos的命名空间)
    active: dev

 spring:
  profiles:
    # 选择配置文件类型(开发环境:dev          测试环境: test         生产环境:prod)
    active: dev
    # active: test
    # active: prod


group
  默认为DEFAULT_GROUP,可以通过spring.cloud.nacos.config.group来配置,当配置项太多或者有重名时,可以通过分组来方便管理
Data ID
  请查看"4.3.2 配置信息" 中的Nacos的Data ID详解

 4.3.2 配置信息

# Nacos的Data ID详解:
#   Nacos配置管理中,配置文件的Data ID的默认格式如下:
#     ${prefix}
#   Nacos配置管理中,配置文件的Data ID的完整格式如下:
#     ${prefix} - ${spring.profiles.active} . ${file-extension}
#   Data ID格式说明:
#     1.${prefix}默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置,注意:除了默认配置文件的Data ID,其他配置文件的Data ID必须写上后缀
#     2.${spring.profiles.active}取spring.profiles.active的值,如(dev、prod、test);注意:当${spring.profiles.active}为空时,对应的连接符"-"也将不存在,Data ID的拼接格式变成${prefix}.${file-extension}
#     3.${file-extension}为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置;目前只支持properties和yaml类型
#     4.建议采用默认格式,使用不同的表空间来放置不同的配置文件

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        # 指定命名空间,默认:public
        namespace: dev
        # 指定命名空间下的分组,默认:DEFAULT_GROUP
        group: order
        # Nacos配置管理中dataId的前缀名称,默认为spring.application.name的值
        prefix: com.qfx.springcloud.config
        # Nacos配置管理中配置内容的数据格式,默认.Properties(可不写)
        file-extension: yaml
        # 引用其他配置文件(方式一),以数组形式存放,文件优先级低于extension-configs引用方式
        shared-configs:
          # 下标[0],下标越大优先级越高
          - data-id: com.qfx.springcloud.common.properties
            # 动态感知Nacos配置文件信息的改变,默认false
            refresh: true
            # 默认DEFAULT_GROUP
            group: common-001
          # 下标[1],下标越大优先级越高
          - data-id: com.qfx.springcloud.common.properties
            refresh: true
        # 引用其他配置文件(方式二),以数组形式存放,文件优先级高于shared-configs引用方式
        extension-configs:
          # 下标[0],下标越大优先级越高
          - data-id: com.qfx.springcloud.common.properties
            refresh: true
            group: common-002
          # 下标[1],下标越大优先级越高
          - data-id: com.qfx.springcloud.common.properties
            refresh: true
            group: common-003
        # 配置文件优先级(优先级大的会覆盖优先级小的,并形成互补),唯独prefix与默认配置文件(spring.application.name)互斥,prefix会覆盖默认配置文件,默认配置中所有配置信息都不会生效
        # 优先级如下:
        # spring.cloud.nacos.config下的prefix完整格式
        #           ↓
        # spring.cloud.nacos.config下的prefix默认格式
        #           ↓
        # 默认配置文件(spring.application.name)
        #           ↓
        # extension-configs(下标越大优先级越高)
        #           ↓
        # shared-configs(下标越大优先级越高)

 

4.4 创建"4.3.2 配置信息"中的配置文件

创建好的配置文件

4.4.1 默认配置文件,order组

4.4.2 默认格式文件,DEFAULT_GROUP默认组

4.4.3 默认格式文件,order组

4.4.4 完整格式文件,order组

4.4.5 公共配置文件,common-001组 

4.4.6 公共配置文件,common-001组

4.4.7 公共配置文件,common-001组

5. 创建一个测试类

 

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope	// 动态感知Nacos配置文件信息的改变
@RequestMapping("test")
public class TestCtl {
	
	@Value("${user.name}")	// 获取配置文件中的key值
	String userName;
	
	@Value("${user.age}")	// 获取配置文件中的key值
	int age;
	
	@Value("${config.name}")// 获取配置文件中的key值
	String configName;
	
	@RequestMapping("configInfo")
	public String configInfo() {
		String str = "userName=" + userName +"<br/>age=" + age + "<br/>configName=" + configName;
		return str;
	}
}心(入门)
https://blog.51cto.com/abcd/4237408

 

6. 启动测试

不同配置文件的组合,会出现不同的结果:

  配置文件优先级(优先级大的会覆盖优先级小的,并形成互补),唯独prefix与默认配置文件(spring.application.name)互斥,prefix会覆盖默认配置文件,默认配置中所有配置信息都不会生效

# 优先级如下:
# spring.cloud.nacos.config下的prefix完整格式
#           ↓
# spring.cloud.nacos.config下的prefix默认格式
#           ↓
# 默认配置文件(spring.application.name)
#           ↓
# extension-configs(下标越大优先级越高)
#           ↓
# shared-configs(下标越大优先级越高)
-----------------------------------
©著作权归作者所有:来自51CTO博客作者pannijingling的原创作品,请联系作者获取转载授权,否则将追究法律责任
Spring Cloud Alibaba入门九:Nocas配置中心(入门)
https://blog.51cto.com/abcd/4237408

6.1 prefix默认格式

默认命名,命名空间dev下的order组的nacos-config-service.yaml文件生效

# 指定命名空间
spring.cloud.nacos.config.namespace=dev
# 指定命名空间下的分组
spring.cloud.nacos.config.group=order
# Nacos配置管理中配置内容的数据格式
spring.cloud.nacos.config.file-extension=yaml
# 应用名称(Nacos会将该名称当做服务名称,同时也是配置管理中默认的Data ID)
spring.application.name=nacos-config-service 

6.2 prefix完整格式

指定命名,命名空间dev下的order组的com.qfx.springcloud.config-dev.yaml文件生效 

# 指定命名空间
spring.cloud.nacos.config.namespace=dev
# 指定命名空间下的分组
spring.cloud.nacos.config.group=order
# Nacos配置管理中配置内容的数据格式
spring.cloud.nacos.config.file-extension=yaml

 删掉order组的com.qfx.springcloud.config-dev.yaml文件,那么order组的com.qfx.springcloud.config文件生效
再把group组修改为DEFAULT_GROUP,那么DEFAULT_GROUP组的com.qfx.springcloud.config文件生效
 

 

7. Nacos动态刷新配置

  大部分的配置在nacos中变更后都可以都到刷新应用,既可以实现不重启springboot服务来达到动态更改的目的;但是像连接像redis、mysql这样使用连接池的数据库是没办法动态刷新的,想要生效就必须重启服务,因为他们的连接参数在程序初始化时就已加载.

 

8. Nacos中的使用

8.1 application.yml(application.properties)获取Nacos中的参数值

采用${变量}的方式获取即可

server:
  port: ${serverPort}

参考资料:https://blog.51cto.com/abcd/4237408

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值