Loading

Nacos之服务配置中心

1.基础代码

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

 <parent>
     <groupId>com.zt.studydemo</groupId>
     <artifactId>study_demo</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <relativePath/> <!-- lookup parent from repository -->
 </parent>

 <artifactId>nacos-config-3377</artifactId>
 <name>nacos-config-3377</name>
 <description>nacos-config-3377</description>

 <properties>
     <java.version>1.8</java.version>
 </properties>

 <dependencies>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>

     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>

     <!-- 2.x后这个是必须引入,官网没有说需要引入 -->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-bootstrap</artifactId>
     </dependency>
 </dependencies>

 <build>
     <plugins>
         <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
     </plugins>
 </build>

</project>

YML配置

需要创建一个bootstrap.properties或bootstrap.yml,nacos作为配置中心的配置必须写在这个配置中,bootstrap的优先级高于application

bootstrap.yml

server:
port: 3377

spring:
application:
 name: nacos-config-3377
cloud:
 nacos:
   config:
     server-addr: 192.168.56.10:8848
     file-extension: yml

application.yml

spring:
profiles:
 active: dev # 表示开发环境

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class NacosConfig3377Application {
 public static void main(String[] args) {
     SpringApplication.run(NacosConfig3377Application.class, args);
 }

}

业务类

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

@RestController
@RefreshScope //支持Nacos的动态刷新功能
public class ConfigClientController {

 @Value("${config.info}")
 private String configInfo;

 @GetMapping(value = "/config/info")
 public String getConfigInfo() {
     return configInfo;
 }
}

2.nacos配置

配置规则:

在 Nacos Spring Cloud 中,dataId 的完整格式如下(详情可以参考官网 https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html):

${prefix}-${spring.profiles.active}.${file-extension}
1.prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
2.spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
3.file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
# ${spring.application.name}-${spring.profiles.active}.${file-extension}
# nacos-config-client-dev.yml
# 微服务名称-当前环境-文件格式

增加配置:

image

image

自动更新配置:

修改Nacos配置,不需要重启项目即可自动刷新

image

image

测试:

启动服务访问服务来测试(没有修改之前是1,修改之后不需要重启项目既可以直接获取最新配置):http://localhost:3377/config/info

image

posted @ 2022-05-21 00:11  ZT丶  阅读(76)  评论(0编辑  收藏  举报