Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。
引用:
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
文中对应的代码可查看:
https://gitee.com/WangFuGui-Ma/spring-cloud-alibaba/tree/master/nacos/config
🐍第一步,创建配置文件到nacos中
在nacos的配置管理页面创建如下图所示的配置
🐍第二步,在项目中配置nacos的地址和指定文件
必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址
spring.application.name 和 nacos中的dataid相对应
spring.cloud.nacos.config.server-addr填写自己本机的nacos地址
🐍第三步,读取配置文件
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
String useLocalCache = applicationContext.getEnvironment().getProperty("useLocalCache");
System.err.println("useLocalCache :"+useLocalCache);
}
}
在我们的springboot启动内中读取我们的配置文件
启动,就可以读取到了
🐦高阶用法
🐦高阶用法一:使用yaml文件
🐦第一步,nacos创建nacos-config.yml文件,配置如下
🐦第二步,修改项目配置文件如下
bootstrap.yml
spring:
application:
name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
file-extension:文件名的后缀
🐦第三步,读取
🐼高阶用法二:使用业务类读取配置
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
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
/**
* http://localhost:8080/config/get
*/
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}
postman测试
🐘高阶用法三:动态刷新配置
修改nacos配置
启动类修改为
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.concurrent.TimeUnit;
/**
* Document: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
*/
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
while(true) {
String useLocalCache = applicationContext.getEnvironment().getProperty("useLocalCache");
System.err.println("useLocalCache :" + useLocalCache);
TimeUnit.SECONDS.sleep(1);
}
}
}
修改之后成功获取
业务类上面可以加注解@RefreshScope
开启刷新配置
🐑高阶用法四:使用相同的配置文件
使用情况:很多系统共用一个配置文件
🐑第一步:替换jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
替换为
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
🐑第二步:nacos创建common.yml文件
🐑第三步,项目配置文件配置
spring:
application:
name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml #文件后缀名
shared-configs:
- common.${spring.cloud.nacos.config.file-extension}
shared-configs:共用的文件
🐑第四步,启动类读取配置
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.concurrent.TimeUnit;
/**
* Document: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
*/
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
while(true) {
String useLocalCache = applicationContext.getEnvironment().getProperty("useLocalCache");
String common = applicationContext.getEnvironment().getProperty("common");
System.err.println("useLocalCache :" + useLocalCache);
System.err.println("common :" + common);
TimeUnit.SECONDS.sleep(1);
}
}
}
🐫高阶用法五: 自定义命名空间(namespace)
nacos默认读取的是public
我们要用到test环境
🐫第一步,创建test命名空间
复制命名空间id 4c9c23a2-0300-4c72-b07f-7846bd03e153
🐫第二步,命名空间里面新建配置文件
🐫第三步,项目配置命名空间
spring:
application:
name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml #文件后缀名
shared-configs:
- common.${spring.cloud.nacos.config.file-extension}
namespace: 4c9c23a2-0300-4c72-b07f-7846bd03e153
namespace: 命名空间id
这样读到的就是test空间下的配置了
🐎高阶用法六:灵活配置环境
🐎第一步,nacos隔离环境
🐎第二步,pom文件配置环境
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
<serverAddr>127.0.0.1:8848</serverAddr>
<namespace>563742f8-6f8b-4b97-8a1f-2f6cf6beb5fa</namespace>
</properties>
<activation>
<!-- 默认环境 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
<serverAddr>127.0.0.1:8848</serverAddr>
<namespace>4c9c23a2-0300-4c72-b07f-7846bd03e153</namespace>
</properties>
</profile>
</profiles>
配置好了要刷新maven
好了之后会有两个配置文件选项
🐎第三步,修改yml文件
spring:
profiles:
active: @profileActive@
application:
name: nacos-config # appName 会自动读取nacos中dataid为nacos-config.yml的文件
cloud:
nacos:
config:
server-addr: @serverAddr@
file-extension: yml #文件后缀名
shared-configs:
- common.${spring.cloud.nacos.config.file-extension}
namespace: @namespace@
但是这个时候启动不了的,因为原生的yml不支持@
符号
🐎第四步,修改pom文件使其支持@
符号
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<build>
<!--build节点增加内容-->
<resources>
<resource>
<directory>src/main/resources</directory>
<!--开启过滤,用指定的参数替换directory下的文件中的参数-->
<filtering>true</filtering>
</resource>
</resources>
</build>
配置好了之后就可以启动
切换环境在maven右侧切换即可
总的来说,Spring Cloud Alibaba Nacos Config是一种用于管理分布式系统配置的工具,它提供了服务器端和客户端的支持,允许用户在Nacos服务器上集中管理Spring Cloud应用程序的外部配置。Spring Cloud Alibaba Nacos Config提供了Config Server和Client的替代方案,客户端和服务器上的概念与Spring Environment和PropertySource有着一致的抽象,在特殊的bootstrap阶段,配置被加载到Spring环境中。在应用程序从开发到测试再到生产的不同环境中,用户可以通过Nacos集中管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。
使用Spring Cloud Alibaba Nacos Config的主要步骤包括:
-
在Nacos配置管理页面上创建配置文件。
-
在项目中配置Nacos地址和指定文件,这必须使用bootstrap.properties配置文件来配置Nacos Server地址。
-
在应用程序启动时读取配置文件。在SpringBoot启动内中读取配置文件,可以使用SpringApplication类的run()方法,然后在ConfigurableApplicationContext上调用getEnvironment().getProperty()方法读取配置属性。
在高阶用法方面,可以使用YAML文件和业务类读取配置。使用YAML文件时,需要在Nacos服务器上创建nacos-config.yml文件,并将配置文件后缀设置为yml。然后,可以使用bootstrap.yml配置文件来指定Nacos服务器地址和文件扩展名。在使用业务类读取配置时,需要使用@Value注解将属性注入到控制器中,并使用@RefreshScope注解使该控制器成为可刷新的bean。这使得在应用程序运行时,可以通过HTTP接口刷新该控制器并重新读取配置。
综上所述,Spring Cloud Alibaba Nacos Config为分布式系统中的外部化配置提供了可靠的解决方案,同时也提供了很多的高级用法,用户可以根据需要自由使用。文章来源:https://www.toymoban.com/news/detail-457235.html
仓库地址:
https://gitee.com/WangFuGui-Ma/spring-cloud-alibaba/tree/master/nacos/config文章来源地址https://www.toymoban.com/news/detail-457235.html
到了这里,关于【Spring Cloud Alibaba】Nacos config的使用和高阶用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!