Nacos-config配置中心介绍
Nacos提供用于存储配置和其他元数据的 key-value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Sping Cloud Alibaba Nacos Config,您可以在nacos server集中管理你Spring Cloud应用的外部属性配置。
1.维护性 2. 时效性 3.安全性
Nacos-config配置管理界面
界面化操作
Nacos-config权限管理
启动权限:修改application.properties
nacos.core.auth.enabled=true
Nacos-config Client读取配置
1.启动nacos 环境搭建
1.创建maven项目config-nacos,导入依赖
<dependencies>
<!-- nacos config 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
2.编写启动类
@SpringBootApplication
public class ConfigApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(ConfigApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user.name:"+userName+";age: "+userAge);
}
}
3.配置文件 application.yml
server:
port: 8050
在运行此 Example之前,必须使用bootstrap.properties(yml)配置文件来配置Nacos Server地址,例如:
配置文件bootstrap.yml
spring:
application:
#会自动根据服务名拉取Dataid对应的配置文件,如果不一致,需要手动指定Dataid
name: com.tian.order
cloud:
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
config:
namespace: public
4.启动控制台输出
user.name:田小泽;age: 22
一旦更改管理界面的信息,那么就会即刻感知
Nacos-config—其他扩展配置
spring:
application:
#会自动根据服务名拉取Dataid对应的配置文件,如果不一致,需要手动指定Dataid
name: com.tian.order
cloud:
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
config:
namespace: public # 默认就是public不用配置省的一直打印信息
#nacos客户端不配置 默认是properties文件扩展名
#file-extension: yaml 用这个修改默认配置
#group: tian #更加细分
shared-configs: # 手动指定Dataid
- data-id: com.tian.common01.properties #相当于下标0
refresh: false # 不动态感知 修改配置文件它不知道 一般不改,默认为true
- data-id: com.tian.common02.properties #相当于下标1
refresh: true
extension-configs[0]:
data-id: com.tian.common03.properties
refresh: true
# 配置文件的优先级(优先级大的会覆盖优先级小的,并且会形成互补)
#profile > 默认配置文件 >extension-configs(下标越大优先级越大) > shared-configs(下标越大优先级越大)
Nacos-config—@RefreshScope
@Value注解可以获取到配置中心的值,但是无法动态感知修改后的值,需要利用@RefreshScope注解
@RestController
@RefreshScope
public class TestController{
@value("${common.age}")
private String age;
@GetMapping("/common")
public String hello(){
return age;
}
}