nacos配置在代码中如何引用

1、在代码的模块服务中安装nacos 配置依赖

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        

2、在nacos配置中心中进行服务配置 注意不是模块名,是服务名称,即在bootstrap.yaml中配置的服务名称

nacos配置在代码中如何引用_第1张图片

3、在模块的bootstrap.yml文件中添加配置信息

# 注意前边是
spring
	cloud
		nacos
			config:
		    	server-addr: 127.0.0.1:8848  # 即服务发现的地址 
		    	# 如果不是public则需要再加一行指定具体的命名空间。

4、使用@Value(${})使用配置

@Value("${common.name}")
private String common_name;

@GetMapping(value = "/configs")
public String getValue(){
    return common_name;
}

获取动态的配置信息

代码如下:

 @Value("${common.name}")  // 这种方法不能获取动态的配置信息
    private String common_name;

 @Autowired
 private ConfigurableApplicationContext applicationContext;  // 这种方式可以获取动态的配置信息

 @GetMapping(value = "/configs")
 public String getValue(){
     // return common_name;
     return applicationContext.getEnvironment().getProperty("common.name");
 }

扩展配置

1、首先在nacos中配置两个拓展的配置文件

配置文件1

nacos配置在代码中如何引用_第2张图片

配置文件2

nacos配置在代码中如何引用_第3张图片

注意这两个文件的配置内容的变化

2、在bootstrap.yaml文件中添加如下配置

config:
  server-addr: 127.0.0.1:8848
   file-extension: yaml # 原配置 或者说是主配置
   group: DEFAULT_GROUP  
   ext-config[0]:  # 拓展配置1
     data-id: ext-config-common01.yaml
     group: COMMON_GROUP
     refresh: true  #  动态刷新
   ext-config[1]:  # 拓展配置2
     data-id: ext-config-common02.yaml
     group: COMMON_GROUP
     refresh: true

3、代码引用:

    @Autowired
    private ConfigurableApplicationContext applicationContext;

    @GetMapping(value = "/config")
    public String getValue(){
        String name = applicationContext.getEnvironment().getProperty("common.name");
        String addr = applicationContext.getEnvironment().getProperty("common.addr");
        return name+addr;
    }

4、最终的输出结果:

nacos配置在代码中如何引用_第4张图片

5、对结果的总结:

5.1、如果主配置中配置的内容和拓展配置的内容重复则按主配置的配置

5.2、如果拓展配置中的内容和另一个拓展配置中的内容重复,则按下标大的配置作为最终的配置

你可能感兴趣的:(Java,java,spring,boot,spring)