文章目录
- Nacos 配置中心实例
- 需求分析/图解
- 在Nacos Server 加入配置
- 创建Nacos 配置客户端模块e-commerce-nacos-config-client5000
- 创建Module
- 修改pom.xml
- 创建application.yml
- 创建bootstrap.yml
- 主启动类
- 业务类
- 测试
- 注意事项和细节
Nacos 配置中心实例
需求分析/图解
在Nacos Server 加入配置
- 进入到Nacos Server
- 加入配置, 特别提醒: 文件后缀.yaml 别忘了.
Data ID: e-commerce-nacos-config-client-dev.yaml
创建Nacos 配置客户端模块e-commerce-nacos-config-client5000
创建Module
先创建e-commerce-nacos-config-client5000 模块
修改pom.xml
- 修改pom.xml
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>e-commerce-center</artifactId><groupId>com.my.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>e-commerce-nacos-config-client5000</artifactId><!--使用版本仲裁--><!--引入相关的依赖: 引入当前需要依赖,后面如果有其它需要,再灵活调整--><dependencies><!--加入nacos-config stater 即场景启动器--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--引入alibaba-nacos--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--引入web-starter--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--引入e_commerce_center-common-api--><dependency><groupId>com.my.springcloud</groupId><artifactId>e_commerce_center-common-api</artifactId><version>${project.version}</version></dependency></dependencies>
</project>
创建application.yml
- 创建application.yml
spring:profiles:active: dev #指定环境,常见的环境有 dev开发/test测试/prod生产
创建bootstrap.yml
- 创建bootstrap.yml
server:port: 20000 #端口spring:application:#这里的name需要参考nacos 配置中心的Data Idname: e-commerce-nacos-config-client#配置nacoscloud:nacos:discovery:server-addr: localhost:8848 #服务注册中心地址config:server-addr: localhost:8848 #配置中心地址file-extension: yaml #指定yaml格式的配置group: search #指定search组,默认是DEFAULT_GROUPnamespace: ec3e8181-f157-4e0c-b3e2-080157f606ce #指定对应namespace id[百度]
#说明
#1. nacos 配置客户端/当前的微服务模块, 会根据配置,找到配置中心的数据(配置文件)
#2. config.server-addr: localhost:8848 可以找到配置中心
#3. spring.application.name 对应是DataId e-commerce-nacos-config
#4. 在application.yml: 配置 spring.profiles.active dev
#5. spring.cloud.nacos.config.file-extension 配置文件的扩展名 .yaml
#6. 小结: 根据配置 就是 到 localhost:8848 下的 e-commerce-nacos-config-dev.yaml
# 获取配置信息/数据
#7. 规则就是: ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 来定位配置中心的 Data ID
主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClientApplication5000 {public static void main(String[] args) {SpringApplication.run(NacosConfigClientApplication5000.class, args);}
}
业务类
- 创建NacosConfigClientController
@RestController
@Slf4j
@RefreshScope //spring cloud原生注解,实现了配置数据的自动刷新
public class NacosConfigClientController {/*** 解读* 1. client 会拉取nacos server 的 e-commerce-nacos-config-client-dev.yaml* config:* ip: "122.22.22.22"* name: "hhh"* 2. @Value("${config.ip}") 会将 config.ip 赋给 configIp* 3. 这里${config.ip} 不能乱写,要有依据*/@Value("${config.ip}")private String configIp;@Value("${config.name}")private String configName;@GetMapping("/nacos/config/ip")public String getConfigIp() {return configIp;}@GetMapping("/nacos/config/name")public String getConfigName() {return configName;}
}
测试
启动Nacos Server
启动e-commerce-nacos-config-client5000
浏览器: http://localhost:5000/nacos/config/ip
注意事项和细节
- src\main\java\com\my\springcloud\controller\NacosConfigClientController.java 的@Value(“${config.ip}”), 是import org.springframework.beans.factory.annotation.Value;而不是lombok 包下的.
- 配置文件application.yml 和bootstrap.yml 结合会得到配置文件/资源的地址.
- 参考文档: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
- 注意在Nacos Server 的配置文件的后缀是.yaml , 而不是.yml
- 在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动, 也就是说如果项目不能正确的获取到Nacos Server 的配置数据,项目是启动不了的.[演示]
- springboot 中配置文件的加载是存在优先级顺序的, bootstrap.yml 优先级高于application.yml
- @RefreshScope 是springcloud 原生注解,实现配置信息自动刷新, 如果在NacosServer 修改了配置数据,Client 端就会得到最新配置