nacos不仅是注册中心,同时也是配置中心,其安装和集群等参考上一篇
pom.xml
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
配置
127.0.0.1:8848是配置中心地址
spring:
application:
name: service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
代码
这里设置了一个动态参数hello,其值会动态从配置中心获取,如果配置中心没有设置,默认值为world。注解@RefreshScope可实现动态刷新参数
@RestController
@RefreshScope //自动刷新
public class HelloController {
@Value(value="${hello:world}")
private String hello;
@RequestMapping("/hello")
public void hello() {
System.out.println(hello);
动态更新配置
启动项目,以上接口默认会打印出world。通过nacos管理页面来动态修改这个值。配置管理--配置列表--点击右边的加号。
- Date ID:项目中配置的服务名
- Group:使用默认DEFAULT_GROUP
- 配置内容hello=abc
配置后控制台会有日志刷新,再次请求接口会显示abc
Data Id
Data Id可以是一组配置参数的id,可以直接用服务应用名命名service,全名是service-profile.properties。profile参数可参考我写的profile,没有可以省略。后缀如果没写默认为properties。比如profile是dev,后缀是yml,配置如下:
项目中还要配置file-extension为yml
spring:
application:
name: service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
namespace和group
namespace可包含多个group,group可包含多个Date ID。namespace和group本生并没有特别含义,可以用来隔离不同的配置。比如一个公司每个项目组使用不同的namespace,每个项目用不同的group,不同的模块用不同Date ID。具体你可以自行规划。如果不设置会用默认的namespace和group。
在nacos控制台命名空间中可添加namespace,注意,添加后的id是系统生成的一串字符,而不是你输入的名称
配置namespace和group
spring:
application:
name: service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
group: group1
namespace: 71f97c35-15b1-493d-bdf3-276257124a6e
扩展配置
在我们多个模块,甚至多个不同的项目中,可能会存在一些相同的配置,可以在ext-config中配置多个扩展的公共data id,可实现各项目同步配置,refresh默认为false,改为true实现自动更新。扩展配置生效的优先级比自生配置低
spring:
application:
name: service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
group: group1
namespace: 71f97c35-15b1-493d-bdf3-276257124a6e
ext-config:
- data-id: demo1.yml
group: group2
refresh: true
|