天天看点

spring cloud alibaba(4)-nacos配置中心

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管理页面来动态修改这个值。配置管理--配置列表--点击右边的加号。

spring cloud alibaba(4)-nacos配置中心
  • Date ID:项目中配置的服务名
  • Group:使用默认DEFAULT_GROUP
  • 配置内容hello=abc

配置后控制台会有日志刷新,再次请求接口会显示abc

Data Id

Data Id可以是一组配置参数的id,可以直接用服务应用名命名service,全名是service-profile.properties。profile参数可参考我写的profile,没有可以省略。后缀如果没写默认为properties。比如profile是dev,后缀是yml,配置如下:

spring cloud alibaba(4)-nacos配置中心

项目中还要配置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是系统生成的一串字符,而不是你输入的名称

spring cloud alibaba(4)-nacos配置中心

配置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
           
spring cloud alibaba(4)-nacos配置中心
spring cloud alibaba(4)-nacos配置中心

继续阅读