From 26be3c4d380a1afecf787afd70a3c5dbcd85872c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 15:18:16 +0000 Subject: [PATCH] Render PlantUML files --- doc/execution-sequence-diagram.md | 18 ++++++++++++++++++ doc/img/execution-sequence-diagram.svg | 1 + 2 files changed, 19 insertions(+) create mode 100644 doc/img/execution-sequence-diagram.svg diff --git a/doc/execution-sequence-diagram.md b/doc/execution-sequence-diagram.md index a31795b..9958e41 100644 --- a/doc/execution-sequence-diagram.md +++ b/doc/execution-sequence-diagram.md @@ -1,5 +1,23 @@ ```plantuml:execution-sequence-diagram @startuml +skinparam backgroundColor #EEEBDC +skinparam handwritten true +skinparam sequence { + ArrowColor DeepSkyBlue + ActorBorderColor DeepSkyBlue + LifeLineBorderColor blue + LifeLineBackgroundColor #A9DCDF + ParticipantBorderColor DeepSkyBlue + ParticipantBackgroundColor DodgerBlue + ParticipantFontName Impact + ParticipantFontSize 17 + ParticipantFontColor #A9DCDF + ActorBackgroundColor aqua + ActorFontColor DeepSkyBlue + ActorFontSize 17 + ActorFontName Aapex +} + title 启动 & 执行时序图 !theme vibrant diff --git a/doc/img/execution-sequence-diagram.svg b/doc/img/execution-sequence-diagram.svg new file mode 100644 index 0000000..bd3b614 --- /dev/null +++ b/doc/img/execution-sequence-diagram.svg @@ -0,0 +1 @@ +启动 & 执行时序图启动 & 执行时序图服务启动服务启动记录每个接口的实现类记录每个接口的实现类动态代理动态代理启动成功启动成功业务逻辑调用业务逻辑调用Jexl引擎Jexl引擎bean加载流程1记录bean加载过程中的每个接口的的实现类在这里会扫描并记录所有接口被@SmartService标注的实现类2创建代理类并注册全局的 bean在这里会为指定interface生成代理类3服务启动完成服务启动完成, 其他需要引入的地方使用 @Resource注解 按接口引入即可逻辑执行:通过组件生成的接口的代理类发起方法调用(该类直接通过 @Resource 注解注入即可)1"通过代理类发起逻辑调用"2获取接口的实现类3解析实现类的切换规则loop["遍历所有的 bean 实现"]JEXL(Java Expression Language)是Apache Commons项目中的一个子项目,它提供了一种轻量级且灵活的表达式语言,用于在Java应用程序中动态计算和操作数据。JEXL的设计初衷是为了使表达式的解析和执行变得简单且高效,同时保持与Java语言的紧密集成。JEXL设计之初就考虑了性能问题,通过编译和缓存机制来提高表达式的执行效率。这里的逻辑判定耗时一般在纳秒级别4创建jexl解析引擎5向jexl注册方法入参6向jexl注册全局变量和自定义函数7通过 jexl 来执行脚本并获取返回结果8jexl 执行输入的条件表达式并返回结果9判定jexl 执行输入的条件表达式是否为 truealt["jexl eval结果为 true"]10"调用符合条件的实现类的方法"11返回函数执行结果</font>12返回函数执行结果</font>["jexl eval结果为 false"]10"继续遍历 eval下一个 bean的条件"alt["未命中任何符合条件实现类"]11获取通过@SmartService的primary属性标注的默认实现12返回函数执行结果13返回函数执行结果 \ No newline at end of file