aifei框架,aifei技术,aifei开发项目介结

Aifei 编程框架项目概述,aifei框架,aifei技术,aifei开发项目介结,技术转摘与java 资深开发工程师社忠福的个人博客,
本文转于:https://www.cnblogs.com/AifeiDev
参考社区技术:https://aifei.dev/#contact

目录
引言
项目结构
核心组件
架构总览
详细组件分析
启动与生命周期(Aifei 与 AifeiConfig)
路由与处理器(Router 与 Handler)
服务器与插件(Server 与 Plugins)
AOP 与代理(Aop 与 ProxyFactory)
模板引擎(Engine)
ORM(AifeiDao)
依赖分析
性能考量
故障排查指南
结论
引言
Aifei 是面向未来的 AI 编程框架,旨在以“Just Service”开发范式降低工程复杂度,提升研发效率与系统稳定性。框架通过模块化设计与插件化能力,提供高性能 Web 服务器、智能 ORM、模板引擎与 AOP 支持,形成从请求处理到数据持久化的完整闭环。其核心理念强调“约定优于配置、扫描优于硬编码、代理优于侵入”,在保证易用性的同时兼顾性能与可扩展性。

项目结构
Aifei 采用多模块 Maven 结构,父工程统一管理版本与依赖,子模块按职责拆分,形成清晰的边界与复用路径:

aifei:核心内核(启动、配置、路由、处理器链、插件)
aifei-undertow:基于 Undertow 的高性能服务器集成
aifei-enjoy:轻量级模板引擎
aifei-db:智能 ORM 与 SQL 执行器
aifei-json、aifei-log、aifei-proxy:配套工具与扩展模块
aifei-all:聚合打包模块
核心模块

父工程

aifei-parent
统一版本与依赖

aifei
核心内核

aifei-undertow
Undertow 服务器

aifei-enjoy
模板引擎

aifei-db
智能 ORM

aifei-json
JSON 工具

aifei-log
日志抽象

aifei-proxy
代理工厂

aifei-all
聚合打包

图表来源

[pom.xml:16-25](file://pom.xml#L16-L25)
[aifei-undertow/pom.xml:7-28](file://aifei-undertow/pom.xml#L7-L28)
[aifei-enjoy/pom.xml:7-31](file://aifei-enjoy/pom.xml#L7-L31)
[aifei-db/pom.xml:7-38](file://aifei-db/pom.xml#L7-L38)
章节来源

[pom.xml:1-277](file://pom.xml#L1-L277)

cn.aifei
aifei-all
1.0.1

核心组件
启动入口与生命周期
Aifei:负责启动流程编排、命令行参数解析、插件启动与停止、Handler 链构建、服务器启动与停机钩子注册。
AifeiConfig:应用配置接口,提供 config(Settings)、config(Routes)、config(Plugins) 三类配置入口,以及 onStart/onStop 生命周期回调。
路由与处理器
Router:基于注解扫描与手动注册的路由构建器,支持路径参数、命名参数、Action 重载与 ActionGroup 精确匹配。
Routes:对外暴露的路由配置门面,支持扫描与手动添加路由。
Handler:处理器抽象,采用 next 链式组合,支持跨层拦截与职责分离。
服务器与插件
Server:服务器抽象,需持有下游 Dispatcher 并提供 start/stop。
Plugins:插件容器,集中管理插件生命周期。
AOP 与代理
Aop:便捷的依赖注入与对象创建入口,结合 ProxyFactory 实现业务层 AOP 代理。
模板引擎
Engine:模板引擎核心,支持多引擎实例、共享函数/方法、指令扩展、开发模式热加载与压缩优化。
ORM
AifeiDao:面向 Row/Model 的链式 SQL DSL,内置 insert/update/delete/find/query/paginate 等丰富能力。
章节来源

[Aifei.java:46-95](file://aifei/src/main/java/cn/aifei/core/Aifei.java#L46-L95)
[AifeiConfig.java:25-51](file://aifei/src/main/java/cn/aifei/config/AifeiConfig.java#L25-L51)
[Router.java:60-131](file://aifei/src/main/java/cn/aifei/router/Router.java#L60-L131)
[Routes.java:38-88](file://aifei/src/main/java/cn/aifei/config/Routes.java#L38-L88)
[Handler.java:22-27](file://aifei/src/main/java/cn/aifei/core/Handler.java#L22-L27)
[Server.java:22-38](file://aifei/src/main/java/cn/aifei/server/Server.java#L22-L38)
[Plugins.java:26-41](file://aifei/src/main/java/cn/aifei/config/Plugins.java#L26-L41)
[Aop.java:89-118](file://aifei/src/main/java/cn/aifei/aop/Aop.java#L89-L118)
[Engine.java:51-114](file://aifei-enjoy/src/main/java/cn/aifei/enjoy/Engine.java#L51-L114)
[AifeiDao.java:39-115](file://aifei-db/src/main/java/cn/aifei/db/core/AifeiDao.java#L39-L115)
架构总览
Aifei 的整体架构围绕“启动器 → 配置 → 路由 → 处理器链 → 服务器”的主线展开,配合 AOP、ORM、模板引擎与插件系统,形成高内聚、低耦合的模块化体系。

应用入口
Aifei.start(...)

配置阶段
AifeiConfig.config(...)

路由构建
Router.scan/add

插件装载
Plugins.start()

处理器链
Handler.next 链

服务器启动
Server.start()

请求处理
Dispatcher/Router/Handler

AOP/拦截器
Aop/Interceptor

模板渲染
Engine

数据访问
AifeiDao/Db

生命周期回调
onStart/onStop

图表来源

[Aifei.java:46-95](file://aifei/src/main/java/cn/aifei/core/Aifei.java#L46-L95)
[AifeiConfig.java:30-50](file://aifei/src/main/java/cn/aifei/config/AifeiConfig.java#L30-L50)
[Router.java:156-170](file://aifei/src/main/java/cn/aifei/router/Router.java#L156-L170)
[Handler.java:22-27](file://aifei/src/main/java/cn/aifei/core/Handler.java#L22-L27)
[Server.java:27-37](file://aifei/src/main/java/cn/aifei/server/Server.java#L27-L37)
[Engine.java:186-206](file://aifei-enjoy/src/main/java/cn/aifei/enjoy/Engine.java#L186-L206)
[AifeiDao.java:309-317](file://aifei-db/src/main/java/cn/aifei/db/core/AifeiDao.java#L309-L317)
详细组件分析
启动与生命周期(Aifei 与 AifeiConfig)
启动流程要点
命令行参数解析:以“--”开头的参数转换为系统属性,支持开关型与键值型。
配置阶段:回调 AifeiConfig 的 config(Settings/Routes/Plugins)。
插件启动:依次调用 Plugins 中每个插件的 start,异常即终止启动。
Handler 链构建:将 List 逆序串联为 next 链。
服务器启动:初始化 Dispatcher 并启动 Server。
停机钩子:Runtime.addShutdownHook 调用 stop,依次停止 Server、onStop、Plugins。
生命周期回调
onStart:所有配置与插件准备完成后回调,可使用插件能力。
onStop:服务器关闭之后、插件关闭之前回调。
"Server"
"Handler链"
"Plugins"
"AifeiConfig"
"Aifei"
"应用"
"Server"
"Handler链"
"Plugins"
"AifeiConfig"
"Aifei"
"应用"
进程退出时触发停机钩子
调用 start(aifeiConfig, args)
解析命令行参数为系统属性
config(Settings/Routes/Plugins)
start()
构建 Handler.next 链
init(H) + start()
stop()
onStop()
stop()
图表来源

[Aifei.java:46-95](file://aifei/src/main/java/cn/aifei/core/Aifei.java#L46-L95)
[AifeiConfig.java:30-50](file://aifei/src/main/java/cn/aifei/config/AifeiConfig.java#L30-L50)
[Plugins.java:30-40](file://aifei/src/main/java/cn/aifei/config/Plugins.java#L30-L40)
章节来源

[Aifei.java:46-198](file://aifei/src/main/java/cn/aifei/core/Aifei.java#L46-L198)
[AifeiConfig.java:25-51](file://aifei/src/main/java/cn/aifei/config/AifeiConfig.java#L25-L51)
[Plugins.java:26-41](file://aifei/src/main/java/cn/aifei/config/Plugins.java#L26-L41)
路由与处理器(Router 与 Handler)
路由扫描与构建
支持类级 @Path 与方法级 @Path,支持入口方法兼容(默认 index)。
支持 Routes 级拦截器优先于全局拦截器。
支持手动添加路由与重复扫描去重。
支持 Action 重载与 ActionGroup,按参数数量与匹配严格度选择最终 Action。
请求匹配与参数提取
路径参数参与匹配;命名参数可缺省,但需满足存在性校验。
对 ActionGroup 进行参数精确匹配,优先匹配参数数量多的 Action,避免误匹配。
处理器链
Handler 抽象定义 handle(path, input, output);通过 next 串联,形成可插拔的处理管线。
否

是

否

是

请求进入

Router.getAction(path,input)

命中 Action?

返回未命中

获取 Action 与参数

参数匹配通过?

Handler.next 链处理

完成

图表来源

[Router.java:355-414](file://aifei/src/main/java/cn/aifei/router/Router.java#L355-L414)
[Handler.java:22-27](file://aifei/src/main/java/cn/aifei/core/Handler.java#L22-L27)
章节来源

[Router.java:60-443](file://aifei/src/main/java/cn/aifei/router/Router.java#L60-L443)
[Routes.java:38-88](file://aifei/src/main/java/cn/aifei/config/Routes.java#L38-L88)
[Handler.java:22-27](file://aifei/src/main/java/cn/aifei/core/Handler.java#L22-L27)
服务器与插件(Server 与 Plugins)
Server 接口
init(Dispatcher):持有下游调度器。
start()/stop():启动与停止。
Plugins 容器
add(Plugin):注册插件。
生命周期:集中启动与停止,异常时记录日志并终止启动。
章节来源

[Server.java:22-38](file://aifei/src/main/java/cn/aifei/server/Server.java#L22-L38)
[Plugins.java:26-41](file://aifei/src/main/java/cn/aifei/config/Plugins.java#L26-L41)
AOP 与代理(Aop 与 ProxyFactory)
Aop 便捷入口
Aop.get(Class)/get(name):创建并注入依赖。
Aop.inject(Object):对已有对象进行依赖注入。
与 Singleton/Before 注解配合,实现业务层 AOP 代理。
ProxyFactory
业务层代理工厂接口,结合 AopKit 实现对象创建与代理。
章节来源

[Aop.java:89-118](file://aifei/src/main/java/cn/aifei/aop/Aop.java#L89-L118)
[ProxyFactory.java:22-24](file://aifei/src/main/java/cn/aifei/proxy/ProxyFactory.java#L22-L24)
模板引擎(Engine)
多引擎实例与共享对象
支持 main 引擎与自定义引擎实例,共享函数/方法、枚举、指令扩展。
开发模式与缓存
devMode 下模板热加载;String 模板缓存可按需开启。
输出与编码
支持自定义 EncoderFactory(含 JDK 编码器)与缓冲区大小配置。
压缩与极速模式
可开启 Compressor 压缩静态内容;支持极速模式减少反射调用。
章节来源

[Engine.java:51-789](file://aifei-enjoy/src/main/java/cn/aifei/enjoy/Engine.java#L51-L789)
ORM(AifeiDao)
链式 DSL 与类型安全
insert/update/delete/find/query/paginate/forEach 等丰富 API。
支持 Enjoy SQL 语法与 sqlId 缓存,提升性能与可维护性。
参数与类型转换
内置多种 queryXxx 类型转换方法,简化结果处理。
分页与大数据遍历
支持分页与分页遍历,适合大数据场景。
章节来源

[AifeiDao.java:39-849](file://aifei-db/src/main/java/cn/aifei/db/core/AifeiDao.java#L39-L849)
依赖分析
模块间依赖
aifei-undertow 依赖 aifei 与 Undertow 核心。
aifei-enjoy 依赖 aifei 与模板相关组件。
aifei-db 依赖 aifei 与 aifei-enjoy,并可选引入 Druid/HikariCP。
依赖管理
父工程统一管理版本与插件,确保模块一致性。
optional

optional

aifei

aifei-undertow

aifei-enjoy

aifei-db

Druid

HikariCP

Undertow-core

图表来源

[aifei-undertow/pom.xml:19-28](file://aifei-undertow/pom.xml#L19-L28)
[aifei-enjoy/pom.xml:19-31](file://aifei-enjoy/pom.xml#L19-L31)
[aifei-db/pom.xml:19-38](file://aifei-db/pom.xml#L19-L38)
章节来源

[pom.xml:75-153](file://pom.xml#L75-L153)
[aifei-undertow/pom.xml:19-28](file://aifei-undertow/pom.xml#L19-L28)
[aifei-enjoy/pom.xml:19-31](file://aifei-enjoy/pom.xml#L19-L31)
[aifei-db/pom.xml:19-38](file://aifei-db/pom.xml#L19-L38)
性能考量
路由匹配优化
路径参数参与匹配,命名参数可缺省;ActionGroup 严格按参数数量与存在性匹配,避免误匹配带来的额外开销。
处理器链与 AOP
Handler.next 链式组合,减少分支判断;AOP 代理在对象创建阶段生效,避免运行期反射开销。
模板引擎
生产模式禁用热加载,String 模板缓存可按需开启;支持压缩与极速模式,降低 I/O 与反射成本。
ORM
Enjoy SQL 与 sqlId 缓存;分页与大数据遍历 API 降低内存压力;类型转换方法减少二次封装。
故障排查指南
启动失败
未配置 Server 或未配置 Handler:检查 AifeiConfig 的 config(Settings) 与 config(Routes) 是否正确设置。
插件启动异常:查看插件 start 抛出的异常并定位具体插件。
路由冲突
未启用 Action 重载导致冲突:在 Routes 中启用 setActionOverload(true),或调整 @Path 与方法签名。
参数匹配失败:确认路径参数数量与命名参数存在性满足 Action 要求。
模板问题
开发模式下模板未热加载:确认 devMode 已开启且模板文件未被缓存。
编码异常:切换至 JDK 编码器工厂以支持更广泛的字符集。
ORM 问题
SQL 参数不匹配:检查 Enjoy SQL 中 #para 与问号占位符数量与顺序。
分页统计异常:自定义 TotalRows 实现或清理 order by 导致的统计偏差。
章节来源

[Aifei.java:66-72](file://aifei/src/main/java/cn/aifei/core/Aifei.java#L66-L72)
[Aifei.java:162-181](file://aifei/src/main/java/cn/aifei/core/Aifei.java#L162-L181)
[Router.java:313-334](file://aifei/src/main/java/cn/aifei/router/Router.java#L313-L334)
[Engine.java:532-543](file://aifei-enjoy/src/main/java/cn/aifei/enjoy/Engine.java#L532-L543)
[AifeiDao.java:309-317](file://aifei-db/src/main/java/cn/aifei/db/core/AifeiDao.java#L309-L317)
结论
Aifei 以“Just Service”为核心开发范式,通过模块化与插件化设计,将高性能 Web 服务器、智能 ORM、模板引擎与 AOP 能力整合为一体。其路由与处理器链设计兼顾性能与可扩展性,AOP 与 ORM 提供简洁而强大的开发体验。对于追求高效、稳定与可演进性的团队,Aifei 提供了从请求到数据的全栈解决方案。

posted @ 2026-06-03 14:32  鬼门元歌  阅读(16)  评论(0)    收藏  举报