Skip to content

框架介绍

Rain 是一个使用 Kotlin 编写、同时面向 Java 与 Kotlin 的 JVM 应用开发框架。它以服务端开发中的常见能力为基础,但并不绑定某一种网络协议或 Web 容器;应用可以选择所需模块,构建自己的运行时与编程模型。

Rain 同时面向两类开发者:应用开发者使用容器、事件、任务等现成能力;框架开发者使用 Loader、Controller 内核、Hook 和类增强建立新的上层框架。后者不是附带用法,而是 Rain 模块边界与协议设计的核心目标。

设计目标

  • 模块化:核心能力拆分为独立 Gradle 模块,下游应用可按需集成。
  • 统一生命周期:应用扫描、Bean 注册、扩展加载、服务启动与停止由 Application 模块协调。
  • 低样板代码:通过 DI、注解扫描和字节码增强减少重复注册逻辑。
  • Java / Kotlin 兼容:公开 API 基于 JVM 类型系统,可从两种语言调用。
  • 框架可扩展:扫描、对象创建、调用过程、生命周期和字节码阶段均提供明确扩展入口。

能力地图

能力模块说明
应用启动application配置初始化、类扫描、Loader 与服务生命周期
依赖注入diBean 创建、命名实例、字段与构造器注入
配置diProperties、YAML、JSON 与多运行模式合并
事件event事件发布、监听器扫描和优先级
调度job注解任务、DSL 动态任务和异常事件
控制器controller协议无关的路由、Action 与处理流程抽象
类增强classloaderhookASM 转换、自定义类加载器和方法 Hook
测试rain-test在 Rain 应用上下文中运行 JUnit 5

当前状态

Rain 当前处于开发版本。仓库构建版本是 1.0.0-DEV12,源码目标为 Java 8;使用更新 JDK 开发和运行时仍应验证依赖兼容性。部分接口仍在演进,例如 Job DSL 中的标准 Cron 表达式入口尚未实现。

Rain 与扩展项目

Rain 核心刻意不绑定 HTTP 服务器和具体数据库技术。需要 Web 能力时使用 SmartWeb,需要数据访问时使用 SmartAccess。三者的关系和版本注意事项见 Rain 生态

建议阅读顺序

应用开发者

  1. 跟随快速开始运行最小应用。
  2. 打开核心模块总览,依次掌握 DI事件任务
  3. 阅读应用生命周期Application 模块,理解这些能力如何被启动。
  4. 开发业务服务时进入 SmartWebSmartAccess 文档。

框架开发者

  1. 先阅读项目结构扩展点总览,理解协议所在层级和启动时机。
  2. 跟随框架模块开发实战,完成公开 API、Loader、Registry、生命周期与测试闭环。
  3. 深入 ApplicationDI,掌握扫描、LoadItem、Bean 创建与配置读取。
  4. 构建新调用协议时阅读 Controller;需要运行时改写时再阅读类增强与 Hook

基于 Apache License 2.0 发布