Soul原始碼分析 —— 分析Plug-in架構模型
阿新 • • 發佈:2021-01-28
Soul原始碼分析 —— soul外掛
什麼是外掛
相對於平臺提供了軟體的核心功能,外掛是對已有功能的擴充套件。 平臺需要定義介面,外掛通過實現平臺定義的介面來獲取平臺的各種資源和資料。平臺通過外掛介面來呼叫外掛所實現的功能
Soul如何實現外掛的呼叫
Soul是通過Java spi來實現的外掛註冊的。相對於api,spi是呼叫方定義介面規範,提供給外部來實現,呼叫方在呼叫時所需的外部實現。
Soul的例子
-
生成包含多個模組的starter,引用starter即引入了所包含的模組的jar包。
-
在這些模組的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的例項。
-
通過ObjectProvider來獲取所有的Soul Plugin的例項
@Bean("webHandler")
public SoulWebHandler soulWebHandler(final ObjectProvider<List<SoulPlugin>> plugins)
小結
本文解析了Soul是如何在閘道器中使用spi來引入多個外掛來擴充套件對不同系統的支援的。