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、容器处理的补充
- 比如有些需要拼装的活,可以交给配置器("@Configuration" 注解的类)去处理
- 或者需要初始化的活,交给生命周期的类("LifecycleBean" 接口实现的组件或 "@Init" 注解函数)去处理
- 再可借助 事件总线 + 应用生命周期 做些事情
附:开源仓库
Solon 框架启动为什么特别快?的更多相关文章
- Solon 框架详解(十一)- Solon Cloud 的配置说明
Solon 详解系列文章: Solon 框架详解(一)- 快速入门 Solon 框架详解(二)- Solon的核心 Solon 框架详解(三)- Solon的web开发 Solon 框架详解(四)- ...
- android插件化-apkplug框架启动-02
本文章基于apkplug v1.6.7 版本号编写,最新方式以官网最新消息为准 一 apkplug框架所须要的库文件(宿主) 可从http://git.oschina.net/plug/apkplug ...
- [Abp 源码分析]一、Abp 框架启动流程分析
Abp 不一定仅用于 Asp.Net Core 项目,他也可以在 Console 与 WinFrom 项目当中进行使用,所以关于启动流程可以分为两种,一种是 Asp.Net Core 项目的启动流程, ...
- css3 animation 在某些浏览器中特别快 bugfix
今天在一款三星 4.2.2 的 webview 里,出现 animation 特别快的问题,把: .xxx{ -webkit-animation: xxx 24s linear infinite; } ...
- ThinkPHP5.0源码学习之框架启动流程
ThinkPHP5框架的启动流程图如下: ThinkPHP5的启动流程按照文件分为三步: 1.请求入口(public/index.php) 2.框架启动(thinkphp/start.php) 3.应 ...
- Sql数据库收缩 语句特别快
数据库在收缩的时候..使用菜单 >> 任务 >> 收缩 >> 文件 >> 数据, 特别慢..还会报错失败.. 但使用脚本 USE [dbName] G ...
- Solon 框架详解(九)- 渲染控制之定制统一的接口输出
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
- ABP框架 - 启动配置
文档目录 本节内容: 配置ABP 替换内置服务 配置模块 为一个模块创建配置 ABP在启动时,提供基础框架和模型来配置和模块化. 置ABP 在预初始化事件中进行配置,示例: kid1412注:XmlL ...
- ABP 框架从源码学习——abp框架启动核心类AbpBootstrapper(2)
在AbpBootstrapper中的两个至关重要的属性:IIocManager 和 IAbpModuleManager public class AbpBootstrapper : IDisposa ...
- [Abp vNext 源码分析] - 1. 框架启动流程分析
一.简要说明 本篇文章主要剖析与讲解 Abp vNext 在 Web API 项目下的启动流程,让大家了解整个 Abp vNext 框架是如何运作的.总的来说 ,Abp vNext 比起 ABP 框架 ...
随机推荐
- PPT 商务PPT怎么做
商务报告:公司专属PPT模板怎么做? 通过LOGO 提取主色调 搜集相关元素 通过LOGO 提取主色调 搜集相关元素 下载图片使用 建立版面
- Djagno 使用locals()
Django使用locals()函数 locals()函数会以字典类型返回当前位置的全部局部变量 在 views.py中添加 #展示 class Goods_list(View): def get(s ...
- django基本流程
创建项目 django-admin startproject web cd web python manage.py startapp weblist 生成迁移文件 python manage.py ...
- 【主流技术】聊一聊 Redis 的基本结构和简单应用(一)
目录 前言 一.String 类型 二.List 类型 三.Hash 类型 四.Set 结构 五.Sort Set (Zset)结构 六.文章小结 前言 Redis 是目前互联网后端的热门中间件之一, ...
- Flask的简单学习
简介 Flask是一个非常小的PythonWeb框架,被称为微型框架:只提供了一个稳健的核心,其他功能全部是通过扩展实现的:意思就是我们可以根据项目的需要量身定制,也意味着我们需要学习各种扩展库的使用 ...
- 7 Englishi 词根
1.跟直播,跟复习课,完成作业 2. 基础差加餐,听录播 3.如何听课 4.单词学习反复多次 如何记笔记 语块的汉语意思 单词的记忆方式和固定表达 俩种方式记忆单词 语块关联记忆 基础词根词缀(6节课 ...
- 每天学五分钟 Liunx 0111 | 服务篇:进程权限
程序存储在硬盘中,需要执行的时候被加载到内存里,内存中的程序以进程的方式运行,进程会根据程序的内容去做读写文件,执行指令等操作. 文件/指令等都有自己的执行权限,符合权限的才能被执行.相应的,进程也需 ...
- ORACLE Enterprise Manager Database Express(OEM-express)(遇到localhost拒绝访问情况)配置端口和启动方法
1.问题 之前一直进不去ORACLE Enterprise Manager Database Express,显示的是localhost拒绝了访问,经过查阅知道是没有配置相应端口. 2.解决方法 转载 ...
- 【css】 text-align 居中导航
原理 :利用 inline-block 将 导航 作为 文本 , 被外层具有 text-align 属性的导航盒子包含 .从而实现居中效果 1. html 结构 <header> < ...
- vue3 路由页面返回时,恢复滚动条位置
首先,路由必须是KeepAlive模式 <script setup lang="ts"> import { onActivated } from "vue&q ...