Java 静态(static)方法读取 Nacos 配置中心
为了降成本节省服务器资源,需要将配置中心从 Apollo 切换到 Nacos,因为注册中心是 Nacos 直接复用集群即可。
问题描述
util 里面获取配置的方法都是 static 静态方法,这就导致了 @Value
根本获取不到 Nacos 里面的配置,所有都改成非静态方法改动很大,很不实际,对调用方很不友好。
尝试过程
查了很多关于Nacos 获取配置中心的资料,资料都很浅显,都是在一个 controller 里面获取,关于静态方法获取的资料找到篇是用 @PostConstruct
注解一个方法将变量赋值给一个 static 变量,这种方法还真行,不过缺点很明显,参数只会在进程启动的时候加载进去,配置中心修改之后并不会生效,需要重启进程才会生效,没有什么价值。
解决方案
试了很多方案都行不通,于是请教组内老司机帮忙协助,在静态方法用 SpringBeanUtil.getBean(AppConfig.class)
这个方法先实例化 bean,然后用 bean 去调用里面的动态方法,是的,获取配置里面的方法还是换成了动态的,这样才方便获取到 @Value
的值,但是用来给业务层调用的方法依然是 static,对业务层调用无影响。
Nacos 配置中心接入流程梳理
官方文档:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html