1. 在nacos控制台创建namespace
2. 创建SpringCloud项目
大家注意springboot和springcloud的版本对应,可以去官网查看。
https://spring.io/projects/spring-cloud#learn
<properties>
<java.version>11</java.version>
<poi.version>5.2.3</poi.version>
<easyexcel.version>3.2.1</easyexcel.version>
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>
<hutool.version>5.8.15</hutool.version>
<flowable.version>6.8.0</flowable.version>
<poi.version>5.2.3</poi.version>
<easyexcel.version>3.2.1</easyexcel.version>
<spring-cloud.version>2021.0.7</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<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>
3. 整合nacos依赖
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
<!-- 启动获取配置中心配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
4. nacos 配置
在nacos控制台添加配置列表:
我添加了两个配置列表,一个项目的私有配置,一个是公共配置(多项目共享)。
5. bootstrap.yml配置
在项目中创建bootstrap.yml文件,并配置Nacos服务地址以及namespace(没有就不需要配置):
spring:
application:
name: nacos-config-client
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: 68468122-8955-45ee-a5b7-3d87972325b1
6. 配置dataId
有两种配置方式,一种是官方自动构建dataId ,另一种是指定dataId。
自动配置 dataId
在Nacos Spring Cloud中,dataId的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
- prefix 默认为
spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。 spring.profiles.active
即为当前环境对应的 profile。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持 properties 和 yaml 类型。
比如项目名称为nacos-config-client
,当前环境为test,格式文件为properties
,那就需要新建一个dataId为nacos-config-client.properties
配置。
手动设置 dataId
在NacosConfigProperties类里面name字段就是配置dataId:
public class NacosConfigProperties {
/**
* nacos config dataId name.
*/
private String name;
//省略其他配置
}
7. 获取数据
通过@Value就能获取配置文件的数据:
@Component
@RefreshScope
public class TestConfig {
@Value(value = "${user.name:null}")
private String test;
public String getTest(){
return test;
}
要实现配置的自动更新,需要添加Spring Cloud原生注解 @RefreshScope。controller直接调用即可:
@RestController
public class TestController {
@Autowired
private TestConfig testConfig;
@GetMapping("/config")
public String testConfig(){
String config = testConfig.getTest();
return config;
}
}
8. 扩展配置和共享配置
开发中,有时候会出现多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ 连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config 也确实支持。
-
Nacos在配置路径
spring.cloud.nacos.config.extension-configs
下,允许我们指定⼀个或多个额外配置。 -
Nacos在配置路径
spring.cloud.nacos.config.shared-configs
下,允许我们指定⼀个或多个共享配置。
上述两类配置都⽀持三个属性:data-id
、group
(默认为字符串DEFAULT_GROUP)、refresh
(默认为true)。
spring:
application:
name: xxxxx-api
profiles:
active: dev
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
namespace: c38b64d5-02e3-49d8-9b4f-a139d6970ccc
## 公共配置
shared-configs:
- data-id: application.yml
group: DEFAULT_GROUP
# 常规配置文件
# 优先级大于 shared-configs,在 shared-configs 之后加载
extension-configs:
- data-id: nacos-config-advanced.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
- data-id: nacos-config-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
- data-id : Data Id
- group:自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
- refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。
注意:这里的Data ID后面是加.yaml后缀的,且不需要指定file-extension。