springboot集成 Nacos 获取nacos中的配置文件内容 实现配置管理

待验证后补入官网教程中的springboot集成nacos官网教程中的“Nacos Spring关键特性”中的全部内容、其中涉及到各个注解的使用及示例此内容

springboot集成 Nacos 获取配置内容 实现配置管理

springboot应用读取nacos中的相关配置,亲测有效。

  • 使用的springboot的版本及相关依赖版本
<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>
		<!--    因目前找到的nacos版本对springboot最高支持到了3.2.9,故将springboot降回此版本    -->
        <version>3.2.9</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
...
	<dependencies>
        <!--   Nacos     -->
        <!--    配置中心    -->
        <!-- Source: https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2023.0.3.4</version>
            <scope>compile</scope>
        </dependency>
   </dependencies>
  • nacos服务端中要读取的配置文件↓
    在这里插入图片描述
  • application.properties配置nacos服务端的连接及要读取的配置文件信息
# Nacos 配置管理
# Nacos服务端地址,需要包括IP地址(不需要http协议前缀)和端口
spring.cloud.nacos.config.server-addr=10.0.33.252:9848
# 对应Nacos服务端中的命名空间(↑图1标识),下图中填写的内容对应【上图中的标识】
spring.cloud.nacos.config.namespace=【命名空间】
# 对应Nacos服务端中的Data ID(↑图2、3标识)
spring.cloud.nacos.config.name=【DataID 2】.【DataID 3# 对应Nacos服务端中的Group(↑图4标识)
spring.cloud.nacos.config.group=【Group】
# 对应Nacos服务端中Data ID的文件后缀(↑图3标识)
spring.cloud.nacos.config.file-extension=【DataID 3# 对应Nacos服务端的登录账户
spring.cloud.nacos.config.username=realUsername
spring.cloud.nacos.config.password=realPassword
#从 Nacos 加载核心配置,optional表示 Nacos 不可用时不阻断启动,refreshEnabled=true表示启用动态刷新。
spring.config.import=optional:nacos:【DataID 2】.【DataID 3】?refreshEnabled=true
  • 向配置类中注入从nacos中读取的属性↓,比如要读取↓ nacos配置文件 中的test.Filter.enabled开关
# 服务地址
test:
  Filter: 
    enabled: true
  • 使用两种方式↓↓,从nacos中读取到的配置信息,通过 Nacos 的 @NacosValue 注解获取并使用属性值和通过直接获取配置类、进而获取配置类中的属性值。有博客提到可以通过@NacosValue("${test.Filter.enabled:false}")设定【未获取到属性值时的】默认值。
  • 百度AI提到@EnableNacosConfig@EnableNacosDiscovery@NacosValue 都是旧版 nacos-spring-context 的注解‌,与 Spring Boot 3.x 不兼容,@NacosProperties 是旧版注解‌,已被 Spring Cloud Alibaba 的配置方式替代‌,@NacosValue 已被 @Value 替代‌↓,Spring Cloud Alibaba 会自动从 Nacos 加载配置,亲测有效。
import org.springframework.beans.factory.annotation.Value;

	@Value("${workflow.mjFilter.enabled}")
    public String secretLevl;
import com.alibaba.nacos.api.config.annotation.NacosValue;
		
	@NacosValue("${test.Filter.enabled}")
    public String secretLevl;
    
    @Autowired
    private NacosConfig nacosConfig;
	
	@GetMapping(value = "/nacosTest")
    public ResponseEntity readFromNacosTest() {
        System.out.println("从nacos读取的密级开关是:"+secretLevl);
        System.out.println("从nacos读取的密级开关是:"+nacosConfig.secretLevl);
        return ResponseEntity.ok().build();
    }

输出结果如下图所示
在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐