当前位置:首页 » 网页前端 » 前端怎么读取nacos配置
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端怎么读取nacos配置

发布时间: 2023-03-01 10:46:18

㈠ springboot 2.4.13 无法从nacos获取配置,但是可以注册到nacos

springboot 2.4.13,集成了nacos,启动后,nacos注册中心有服务,但是,发现,配置没有生效。于是,开启了一段源码查找的过程。

首先,是pom引入的nacos配置

然后,application.yml添加nacos配置

启动后,发现注册中心有服务,但是,服务的配置不是从nacos配置中心获取的,而是本地的。

查找一下nacos源码,找到nacos配置自动注入那块儿:

然后发现,是这个NacosPropertySourceLocator实现的配置导入的

查询源码,可以发现,相关的配置,是通过这个方法,加载的,这个方法是总入口。

于是,尝试加断点,查看配置信息,看看为什么没有导入配置。然而,程序根本就没有进入这个方法里面!!!

根据接口实现,可以发现NacosPropertySourceLocator 是PropertySourceLocator的实现类,这个方法的调用执行,不是nacos自己去做的,而是通过spring去做的。

spring cloud 通过BootstrapApplicationListener,以监听器的方式,通过监听springboot启动过程中的事件,通过onApplicationEvent方法处理事件,导入spring cloud相关配置。

通过加断点,可以发现,这里的方法bootstrapEnabled()返回值是false,直接就不执行后续的加载了。

因此,需要保证bootstrapEnabled返回值是true。

查看PropertyUtils源码,可以发现,需要配置项 spring.cloud.bootstrap.enabled=true 并且存在 org.springframework.cloud.bootstrap.marker.Marker 类的时候,spring cloud 才会去加载spring cloud的配置。

因此,pom中需要添加marker所在的组件依赖:

此时,需要在 bootstrap.yml 中添加spring cloud配置:

(至于为什么是bootstrap.yml而不是application.yml,这又是另一个问题了)

有了上面的配置,程序启动后,就能正常的从nacos配置中心获取配置了。

㈡ Spring Gateway 集成Nacos 实现动态路由配置

通过Spring Gateway 集成Nacos实现配置管理,并且实现动态路由管理。

一、创建test-gateway项目,POM文件如下:

二、创建项目配置文件bootstrap.yml

a、test_gateway_commons.yml内容如下:

三、创建网关配置类 GatewayConfig.java

四、创建动态路由服务DynamicRouteServiceImpl.java

五、创建通过Nacos读取动态路由配置服务.java

六、配置动态路由配置文件gateway_dynamic_router,内容如下:

通过以上步骤就完成Spring Gateway 集成Nacos 实现动态路由配置功能。以后只要通过修改Nacos的配置文件就可以时间服务的动态上下线了。不需要再重启网关了。