一、安装nacos
1、到Nacos的github地址:https://github.com/alibaba/nacos下载nacos的window压缩包。
解压缩后修改bin目录下startup.cmd 文件为单机模式(set MODE=“standalone”),然后双击运行该文件。
二、配置Nacos管理控制台
1.命名空间(namespace)
- namespace命名空间是nacos在这里插入代码片
针对于企业级开发设计用来针对于不同环境的区分,
- 比如正在企业开发时有测试环境,生产环境,等其他环境,因此为了保证不同环境配置实现隔离,提出了namespace的概念,
- 默认在nacos中存在一个public命名空间所有配置在没有指定命名空间时都在这个命名空间中获取配置,
- 在实际开发时可以针对于不能环境创建不同的namespace空间。
*注意:创建命名空间的时候如果不填空间id则会生成一个默认的id,在bootstrap.yml配置文件中要指定的是空间的id而不是名字*
这里创建一个dev的命名空间。
2 . 配置文件
选中一个命名空间,创建一个配置文件,配置文件的命名按 prefix−{spring.profile.active}.${file-extension}
格式。
prefix: 表示配置文件前缀,默认是spring.application.name的值,如果配置了spring.cloud.nacos.config.prefix就取prefix的值。
spring.profile.active: 表示项目使用的profile.active配置(区分环境),没有则配置文件中没有此段名称。
file-extension: 表示配置文件的后缀,目前只支持yaml和properties。
三、引入依赖
springBoot的版本是 2.7.2
SpringCloud的版本是 <spring-cloud.version>2021.0.3</spring-cloud.version>
<?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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>nacos-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nacos-demo</name>
<description>nacos-demo</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2021.0.3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<!-- nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.0.1.0</version>
</dependency>
<!-- nacos 注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.1.0</version>
</dependency>
<!-- 解决新版cloud中nacos配置的使用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
四、添加nacos配置文件
添加bootstrap.yml文件中的配置(高版本的springcloud需要引入spring-cloud-starter-bootstrap依赖,否则会解析不了bootstrap.yml文件)
spring:
cloud:
nacos:
# nacos用户名
username: nacos
# nacos用户密码
password: nacos
# nacos服务器地址
server-addr: localhost:8848
# nacos配置中心相关
config:
# 开启nacos作为配置中心,默认值:true
enabled: true
# 作为配置中心的nacos服务器地址,默认值:${spring.cloud.nacos:server-addr}
server-addr: localhost:8848
# 配置文件读取的nacos命名空间ID,默认值:public
namespace: public
# 配置文件在nacos命名空间中的分组,默认值:DEFAULT_GROUP
group: DEFAULT_GROUP
# 配置文件的文件前缀(配置文件名称),默认值:${spring.application.name}
prefix: nacos
# 配置文件的文件后缀(文件类型),默认值:properties
file-extension: yaml
# 配置内容的编码方式,默认值:UTF-8
#encode: UTF-8
# 获取配置的超时时间,单位:ms,默认值:3000
timeout: 3000
# 开启监听和自动刷新,动态感知配置变化,默认值:true
refresh-enabled: true
# AccessKey
#access-key: 123
# SecretKey
#secret-key: 123
# 引入共享配置(同一分组)
shared-configs:
# 配置支持共享的 Data Id
- data-id: nacos.yaml
# 配置 Data Id 所在分组,缺省默认 DEFAULT_GROUP
group: DEFAULT_GROUP
# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
refresh: true
# 引入扩展配置(同一分组或不同分组)
extension-configs:
# 配置支持共享的 Data Id
- data-id: nacos.yaml
# 配置 Data Id 所在分组,缺省默认 DEFAULT_GROUP
group: DEFAULT_GROUP
# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
refresh: true
# nacos注册中心相关
discovery:
# 开启nacos作为服务注册中心,默认值:true
enabled: true
# 作为注册中心的nacos服务器地址,默认值:${spring.cloud.nacos:server-addr}
server-addr: localhost:8848
# 服务注册在nacso上的命名空间ID,默认值:public
namespace: public
要想实现配置信息动态刷新还需要添加@RefreshScope注解
@RequestMapping("/test")
@RestController
@RefreshScope
public class TestController {
@Value("${test:www}")
private String test;
@GetMapping("/nacos")
public String get() {
return test;
}
}