springboot集成 Nacos 获取nacos中的配置文件内容 实现配置管理
springboot集成 Nacos 获取nacos中的配置文件内容 实现配置管理
- springboot集成 Nacos 获取配置内容 实现配置管理
待验证后补入官网教程中的springboot集成nacos和官网教程中的“Nacos Spring关键特性”中的全部内容、其中涉及到各个注解的使用及示例和此内容
springboot集成 Nacos 获取配置内容 实现配置管理
springboot应用读取nacos中的相关配置,亲测有效。
- 使用的springboot的版本及相关依赖版本
<projectxmlns="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=【DataID2】.【DataID3】# 对应Nacos服务端中的Group(↑图4标识)spring.cloud.nacos.config.group=【Group】# 对应Nacos服务端中Data ID的文件后缀(↑图3标识)spring.cloud.nacos.config.file-extension=【DataID3】# 对应Nacos服务端的登录账户spring.cloud.nacos.config.username=realUsernamespring.cloud.nacos.config.password=realPassword#从 Nacos 加载核心配置,optional表示 Nacos 不可用时不阻断启动,refreshEnabled=true表示启用动态刷新。spring.config.import=optional:nacos:【DataID2】.【DataID3】?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 加载配置,亲测有效。
importorg.springframework.beans.factory.annotation.Value;@Value("${workflow.mjFilter.enabled}")public String secretLevl;importcom.alibaba.nacos.api.config.annotation.NacosValue;@NacosValue("${test.Filter.enabled}")public String secretLevl;@Autowired private NacosConfig nacosConfig;@GetMapping(value="/nacosTest")public ResponseEntityreadFromNacosTest(){System.out.println("从nacos读取的密级开关是:"+secretLevl);System.out.println("从nacos读取的密级开关是:"+nacosConfig.secretLevl);returnResponseEntity.ok().build();}输出结果如下图所示
