Spring Boot 多模块开发,SDK工具模块配置读取

       前景:spring-boot 多模块应用开发,工具模块在主模块中引用(jar包形式),出现工具模块配置读取异常问题。
       例如:XXX-Center 主业务模块,引用XXX-SDK模块。
       建议:工具模块中不要命名启动项默认配置文件名称

在这里插入图片描述

       如上图:sdk为工具包,如果sdk中配置文件命名application.properties,center中也存在application.properties,那么SDK中使用Settings等静态加载配置的方式,则会拿不到配置。

       解决方法就是在作为工具包的模块中,不要以用SpringBoot默认读取的配置文件名命名

原理:
以Hutool 工具Setting读取机制为例:
       1、JAVA的三种类加载机制这里就不说了,百度一下。获取配置的时候,会取当前线程(上下文)的类加载器,AppClassLoader为类加载器对象,获取类加载器的资源,如下图。点进去,发现是个递归方法,会向上找巡BootStrap的资源。找到了就返回。
       2、而主应用的配置问价加载优先级,是高于sdk等依赖的配置文件加载级别。因此这里首先会找寻到应用的application.properties。此时拿到的了配置,但是是主应用的,因此也就造就了sdk工具包配置读取失败问题。
       3、如果主应用没有配置application.properties,那么这里拿到的就是sdk的配置文件。因为此时加载到资源的配置,就是sdk的application.properties.
       4、那么对sdk的配置文件重命名后又是怎么读取的?重命名,不以默认读取名命名,当前app,Bootsrap资源都找不到配置文件,这时,会进入findResource方法。此方法会进入URLClassLoader类中,执行根据入参名,搜索加载的所有地址资源。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值