1:Nacos配置入门
1.1: 新建一个SPringBoot项目,完整的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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<groupId>com.coco</groupId>
<artifactId>naocs-config</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>naocs-config</name>
<description>Demo project for Spring Boot</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>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</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>
1.2: 新建IndexController.class
@RestController
public class IndexController {
@Value("${cocoStr}")
private String cocoStr;
@GetMapping("/index")
public String index() {
return cocoStr;
}
}
1.3: 新建bootstrap.yml,配置Nacos配置中心地址
spring:
application:
name: nacosconfig # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
1.4: 在Nacos创建配置
1.5:启动项目,访问 http://localhost:8080/index, 就可以获取到配置了
2:多环境下的配置切换
在工作中,一般的公司都有开发环境,测试环境,线上环境,那么如何使用Nacos做到环境配置的切换呢
2.1:修改配置文件
spring:
application:
name: nacosconfig # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
# 切换环境配置 test dev prod
profiles:
active: prod
2.2:在Nacos上创建配置文件
2.3:参数说明
- 我们在Nacos创建的配置Data Id 为 nacosconfig-prod.yaml
- nacosconfig:表示的是我们的项目名,也就是spring.application.name的值
- prod:表示的是spring.profiles.active的值
- .yaml:表示的是file-extension 的值
2.4:启动项目,访问 http://localhost:8080/index, 就可以获取到配置了
2.5:现在是prod环境,那如何切换到开发或者测试环境呢??
2.6:如果要切换到测试环境,只需要修改配置文件
spring:
application:
name: nacosconfig # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
# 切换环境配置 test dev prod
profiles:
active: test # 切换到测试环境
2.7: 在Nacos上创建测试配置
2.8:要切换到dev环境一样,只需要在创建一个nacosconfig-dev.yaml的配置文件,然后修改本地的 spring.profiles.active=dev 即可
3:通用配置
我们现在有多个微服务,每个微服务都会有自己的一套配置,但是往往有很多配置都是一样的,比如消息中间件,redis之类的,如果每个微服务的配置文件里面都配置一份,那就显的有点多余了。这时候可以把这类通用的配置抽离出来,让所有微服务共享
3.1: 比如现在的redis的配置和rabbitmq的配置,在Nacos上创建redis.yaml和rq.yaml
3.2:修改本地配置文件
spring:
application:
name: nacosconfig # 这里配置的名称要与Nacos配置中心的Data Id一样,比如这里是nacosconfig,那么配置中的的Data Id = nacosconfig.yaml
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
profiles:
active: prod
# shared-configs 与 extension-configs作用与用法一致,这里也可以使用extension-configs代替shared-configs
shared-configs[0]:
data_id: redis.yaml
refresh: true #默认是false,是否支持动态刷新
group: DEFAULT_GROUP #可以不写,默认就是group: DEFAULT_GROUP
shared-configs[1]:
data_id: rq.yaml
refresh: true #默认是false,是否支持动态刷新
group: DEFAULT_GROUP #可以不写,默认就是group: DEFAULT_GROUP
3.3: 访问配置
@RestController
public class IndexController {
@Value("${cocoStr}")
private String cocoStr;
@Value("${redisIp}")
private String redisIp;
@Value("${rqIp}")
private String rqIp;
@GetMapping("/index")
public String index() {
return cocoStr + redisIp + rqIp;
}
}
3.4:访问 http://localhost:8080/index 就可以获取到配置了
4:结尾
以上就是Nacos作为配置中心的简单Demo,多环境配置切换,以及公用配置的定义的