获取nacos配置中心文件值_Java 静态(static)方法读取 Nacos 配置中心

本文介绍了如何在Java中使用静态方法读取Nacos配置中心的值。由于静态方法无法直接利用Spring的@Value注解,作者尝试了多种方案,最终通过实例化SpringBeanUtil获取AppConfig Bean,再调用其动态方法来实现静态方法中获取Nacos配置。详细步骤包括添加依赖、配置文件设置、创建动态方法和在静态方法中调用。
摘要由CSDN通过智能技术生成

为了降成本节省服务器资源,需要将配置中心从 Apollo 切换到 Nacos,因为注册中心是 Nacos 直接复用集群即可。

问题描述

util 里面获取配置的方法都是 static 静态方法,这就导致了 @Value 根本获取不到 Nacos 里面的配置,所有都改成非静态方法改动很大,很不实际,对调用方很不友好。

尝试过程

查了很多关于Nacos 获取配置中心的资料,资料都很浅显,都是在一个 controller 里面获取,关于静态方法获取的资料找到篇是用 @PostConstruct 注解一个方法将变量赋值给一个 static 变量,这种方法还真行,不过缺点很明显,参数只会在进程启动的时候加载进去,配置中心修改之后并不会生效,需要重启进程才会生效,没有什么价值。

解决方案

试了很多方案都行不通,于是请教组内老司机帮忙协助,在静态方法用 SpringBeanUtil.getBean(AppConfig.class) 这个方法先实例化 bean,然后用 bean 去调用里面的动态方法,是的,获取配置里面的方法还是换成了动态的,这样才方便获取到 @Value 的值,但是用来给业务层调用的方法依然是 static,对业务层调用无影响。

Nacos 配置中心接入流程梳理

1.pom.xml 增加 dependency

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-config

2.增加配置文件

resources/bootstrap.properties

3.写一个动态方法用

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Nacos 官方提供的 Java SDK 和 Nacos 配置客户端来读取 Nacos 配置中心的配置。假设你已经引入了 Nacos 客户端依赖,可以按照以下步骤进行静态方法读取: 1. 创建 Nacos 配置客户端 ```java import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.exception.NacosException; public class NacosConfigClient { private static final String SERVER_ADDR = "localhost:8848"; // Nacos 服务器地址 private static final String DEFAULT_GROUP = "DEFAULT_GROUP"; // 配置分组 private static final long TIMEOUT_MS = 5000; // 请求超时时间 private static ConfigService configService; static { try { configService = NacosFactory.createConfigService(SERVER_ADDR); } catch (NacosException e) { e.printStackTrace(); } } public static ConfigService getConfigService() { return configService; } } ``` 2. 读取配置 ```java import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.exception.NacosException; public class NacosConfigUtil { private static final String DATA_ID = "example"; // 配置 ID public static String getConfig() { try { ConfigService configService = NacosConfigClient.getConfigService(); return configService.getConfig(DATA_ID, DEFAULT_GROUP, TIMEOUT_MS); } catch (NacosException e) { e.printStackTrace(); } return null; } } ``` 在上面的示例,我们通过 `NacosConfigClient` 类的静态方法获取了一个 Nacos 配置客户端实例,并在 `getConfig()` 方法使用该客户端来读取指定配置 ID 的配置内容。你只需要将 `DATA_ID` 修改为你自己的配置 ID 即可使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值