IntelliJ IDEA搭建SpringBoot项目

IntelliJ IDEA搭建SpringBoot项目,第1张

若不使用镜像,会发现maven项目会同步半天都不成功。

>

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

首先,是pom引入的nacos配置

然后,applicationyml添加nacos配置

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

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

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

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

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

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

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

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

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

查看PropertyUtils源码,可以发现,需要配置项 springcloudbootstrapenabled=true 并且存在 orgspringframeworkcloudbootstrapmarkerMarker 类的时候,spring cloud 才会去加载spring cloud的配置。

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

此时,需要在 bootstrapyml 中添加spring cloud配置:

(至于为什么是bootstrapyml而不是applicationyml,这又是另一个问题了)

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

pomxml

Applicationjava

applicationyml

测试访问:

pomxml

bootstrapyml

注意:如果Eureka端口被修改,则eurekaclient的配置不能放到git远端

Server端和Client端的pomxml加上

测试启动成功后在RabbitMQ上查看bus是否创建了消息队列

docker安装RabbitMQ -

暴露bus-refresh接口,在Server端applicationyml加上

在需要刷新配置的地方加上注解@RefreshScope,例如:

测试发送post请求刷新配置:

开源中国gitee的WebHooks目前和SpringCloud Config组件不兼容,所以只能用github的WebHooks

url必须为外网地址,可以使用netappcn获取免费隧道

SpringCloud Config组件提供了用于WebHooks的路由叫做monitor

以上就是关于IntelliJ IDEA搭建SpringBoot项目全部的内容,包括:IntelliJ IDEA搭建SpringBoot项目、使用docker-compose.yml在swarm中部署应用、springboot 2.4.13 无法从nacos获取配置,但是可以注册到nacos等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9516121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存