Solon 框架启动为什么特别快?

思来想去!可能与 Solon 容器的独立设计有一定关系。

1、Solon 注解容器的运行特点

  • 有什么注解要处理的(注解能力被规范成了四种),提前注册登记
  • 全局只扫描一次,并在扫描过程中统一处理注解相关
  • 扫描注入时,目标有即同步注入,没有时则订阅注入
  • 自动代理。即自动发现AOP需求,并按需动态代理

2、内部结构示意图

3、支持四种注解能力的处理对象:

对象 说明
BeanBuilder 构建器(比如:@Component 注解,如果没有注册此注解的构建器,则会无视)
BeanInjector 注入器(比如:@Inject、@Db、@CloudConfig、@VaultInject)
BeanExtractor 提取器(比如:@Scheduled、@CloudJob)
BeanInterceptor 拦截器(比如:@Tran、@Cache)

Solon Aop 的具体表象:即为注解处理,原则上需要提前埋好切点(不支持表达式 Aop)。开发及应用可见《四种自定义注解开发汇总》

4、关于自动代理

当一个组件(即 @Component 注解的类),其函数上的注解有对应的拦截处理时(即有 AOP 的需求)。此组件会启用动态代理。关于代理,可参考《动态代理的本质》。v2.5.3 后支持

5、容器处理的补充

附:开源仓库

相关推荐
爱笑的眼睛1128 分钟前
自动机器学习组件的深度解析:超越AutoML框架的底层架构
java·人工智能·python·ai
⑩-35 分钟前
简单业务异常类
java
乘风!37 分钟前
NSSM启动tomcat部署Java程序
java·服务器·后端·tomcat
BBB努力学习程序设计1 小时前
Java 21虚拟线程与平台线程:JVM层面的深度对比与实现原理
java
代码无疆1 小时前
学点java字节码更易于理解一些特殊的java语法效果
java·后端
BBB努力学习程序设计1 小时前
Java 8日期时间API完全指南:告别Date和Calendar的混乱时代
java
不能只会打代码1 小时前
力扣--3433. 统计用户被提及情况
java·算法·leetcode·力扣
知青先生1 小时前
E9项目调试方式
java·ide
本地运行没问题1 小时前
从零散编译到一键打包:Maven如何重塑Java构建流程
java
10km1 小时前
java:延迟加载实现方案对比:双重检查锁定 vs 原子化条件更新
java·延迟加载·双重检查锁定