Soul网关源码探秘《七》 - 插件链初始化分析

Soul网关源码探秘《七》 - 插件链初始化分析

soul-bootstrap 与插件链之间的关系

前文中我们发现soul-web项目启动时,在初始化SoulWebHandler的过程中会使用传入的参数plugins来形成插件链。

那么问题来了,网关项目soul-bootstrap启动的时候,又是怎么形成插件链的呢?

在初始化SoulWebHandler Bean的位置打一个断点,然后重启网关项目soul-bootstrap,验证是否会经过初始化SoulWebHandler Bean的逻辑。结果果然不出所料。

初始化soulwebhandler

在断点处,已经有15个插件加载了进来。接下来继续探索一下soul-bootstrapsoul-web之间的引用关系。

在项目内全局搜索soul-web,可以发现在soul-spring-boot-starter-gateway把它添加为了依赖。之后在 soul-bootstrap 的 pom 文件中去验证,果然它又把soul-spring-boot-starter-gateway添加为了依赖。至此soul-bootstrapsoul-web之间的关系就明确了。

gateway依赖

插件链如何初始化

soul-bootstrap启动的过程中,所有插件又是怎么形成final ObjectProvider<List<SoulPlugin>> plugins,然后初始化SoulWebHandler的呢?

可以看到SoulWebHandler所在的配置类通过配置了@ComponentScan("org.dromara.soul")会去扫描org.dromara.soul包。

同属org.dromara.soul包下所有插件的 starter项目中,在各自的spring.factories 文件里都指定了自动配置类。以DividePluginConfiguration为例:

DividePluginConfiguration
DividePluginConfiguration

因此,List<SoulPlugin>会去收集在soul-bootstrap的 pom 文件里引入了相关依赖的插件,并以此形成插件链。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rughru

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值