Soul源码分析 —— 分析Plug-in架构模型

什么是插件

相对于平台提供了软件的核心功能,插件是对已有功能的扩展。 平台需要定义接口,插件通过实现平台定义的接口来获取平台的各种资源和数据。平台通过插件接口来调用插件所实现的功能

Soul如何实现插件的调用

Soul是通过Java spi来实现的插件注册的。相对于api,spi是调用方定义接口规范,提供给外部来实现,调用方在调用时所需的外部实现。

Soul的例子

  1. 生成包含多个模块的starter,引用starter即引入了所包含的模块的jar包。

  2. 在这些模块的META-INF/spring.factories路径下,以soul-spring-boot-starter-plugin-sign为例,有以下定义

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    org.dromara.soul.springboot.starter.plugin.sign.SignPluginConfiguration
    

    通过SignPluginConfiguration这个java config文件,网关在bean容器初始化时会创建定义好的plug-in bean的实例。

  3. 通过ObjectProvider来获取所有的Soul Plugin的实例

@Bean("webHandler")
public SoulWebHandler soulWebHandler(final ObjectProvider<List<SoulPlugin>> plugins) 

小结

本文解析了Soul是如何在网关中使用spi来引入多个插件来扩展对不同系统的支持的。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页