框架介绍
Rain 是一个使用 Kotlin 编写、同时面向 Java 与 Kotlin 的 JVM 应用开发框架。它以服务端开发中的常见能力为基础,但并不绑定某一种网络协议或 Web 容器;应用可以选择所需模块,构建自己的运行时与编程模型。
Rain 同时面向两类开发者:应用开发者使用容器、事件、任务等现成能力;框架开发者使用 Loader、Controller 内核、Hook 和类增强建立新的上层框架。后者不是附带用法,而是 Rain 模块边界与协议设计的核心目标。
设计目标
- 模块化:核心能力拆分为独立 Gradle 模块,下游应用可按需集成。
- 统一生命周期:应用扫描、Bean 注册、扩展加载、服务启动与停止由 Application 模块协调。
- 低样板代码:通过 DI、注解扫描和字节码增强减少重复注册逻辑。
- Java / Kotlin 兼容:公开 API 基于 JVM 类型系统,可从两种语言调用。
- 框架可扩展:扫描、对象创建、调用过程、生命周期和字节码阶段均提供明确扩展入口。
能力地图
| 能力 | 模块 | 说明 |
|---|---|---|
| 应用启动 | application | 配置初始化、类扫描、Loader 与服务生命周期 |
| 依赖注入 | di | Bean 创建、命名实例、字段与构造器注入 |
| 配置 | di | Properties、YAML、JSON 与多运行模式合并 |
| 事件 | event | 事件发布、监听器扫描和优先级 |
| 调度 | job | 注解任务、DSL 动态任务和异常事件 |
| 控制器 | controller | 协议无关的路由、Action 与处理流程抽象 |
| 类增强 | classloader、hook | ASM 转换、自定义类加载器和方法 Hook |
| 测试 | rain-test | 在 Rain 应用上下文中运行 JUnit 5 |
当前状态
Rain 当前处于开发版本。仓库构建版本是 1.0.0-DEV12,源码目标为 Java 8;使用更新 JDK 开发和运行时仍应验证依赖兼容性。部分接口仍在演进,例如 Job DSL 中的标准 Cron 表达式入口尚未实现。
Rain 与扩展项目
Rain 核心刻意不绑定 HTTP 服务器和具体数据库技术。需要 Web 能力时使用 SmartWeb,需要数据访问时使用 SmartAccess。三者的关系和版本注意事项见 Rain 生态。
建议阅读顺序
应用开发者
- 跟随快速开始运行最小应用。
- 打开核心模块总览,依次掌握 DI、事件和任务。
- 阅读应用生命周期和 Application 模块,理解这些能力如何被启动。
- 开发业务服务时进入 SmartWeb 或 SmartAccess 文档。
框架开发者
- 先阅读项目结构与扩展点总览,理解协议所在层级和启动时机。
- 跟随框架模块开发实战,完成公开 API、Loader、Registry、生命周期与测试闭环。
- 深入 Application 和 DI,掌握扫描、
LoadItem、Bean 创建与配置读取。 - 构建新调用协议时阅读 Controller;需要运行时改写时再阅读类增强与 Hook。