开始
ako-rain 是当前 Ako JVM 方向已经接通的后端实现。它把 Ako 核心模型协议接入 Rain 应用生命周期、SmartWeb 控制器和 SmartAccess/JPA 数据访问。
依赖
ako-rain 的构建文件把 Rain、SmartWeb 和 SmartAccess 作为平台依赖,因此业务应用需要显式引入一组相互匹配的版本。源码仍是开发版本,下面用占位符避免复制出过期坐标:
repositories {
mavenCentral()
maven("https://maven.cnb.cool/IceCream/maven/-/packages/")
}
val akoVersion = "<ako-version>"
val rainVersion = "<rain-version>"
val smartWebVersion = "<smartweb-version>"
val smartAccessVersion = "<smartaccess-version>"
dependencies {
implementation("com.ako-dev:ako-rain:$akoVersion")
implementation("com.IceCreamQAQ.Rain:application:$rainVersion")
implementation("com.IceCreamQAQ.Rain:controller:$rainVersion")
implementation("com.IceCreamQAQ.SmartWeb.Server:SmartHTTP:$smartWebVersion")
implementation("com.IceCreamQAQ.SmartAccess:hibernate5:$smartAccessVersion")
runtimeOnly("com.h2database:h2:<h2-version>")
}版本请以 JVM 根项目和 framework/rain/build.gradle.kts 的组合为准。不要把开发版本直接升级成互不匹配的一组。
当前源码快照的参考值是:Ako 根项目版本 0.0.14;framework/rain 构建文件中使用的 Rain、SmartWeb、SmartAccess 仍是开发版本。发布和运行前请核对制品仓库中真正存在的版本。
创建入口
Rain 应用使用完整启动器:
package example
import rain.application.FullStackApplicationLauncher
fun main() {
FullStackApplicationLauncher.launch()
}FullStackApplicationLauncher 会创建支持 Rain 类增强的应用类加载器;如果不需要类增强,可以按 Rain 文档选择基础启动器。
配置扫描与数据库
Ako 模型和 Access 必须在 Rain 扫描范围内。可以在 src/main/resources/conf/application.properties 中写入:
rain.scanPackages=exampleako-rain 自身的模块配置会注册 ako.rain.AkoRain,不要移除它。使用 H2 验证链路时,可以配置:
webServer:
port: 17777
db:
provider: smartaccess.hibernate.HibernateService
driver: org.h2.Driver
url: jdbc:h2:./h2db/ako
username: h2
password: h2
dialect: org.hibernate.dialect.H2Dialect生产环境请根据 SmartAccess 文档配置实际数据库、连接池和 Hibernate 参数。Rain 的配置文件格式、扫描边界和启动顺序见 Rain 快速开始 与 SmartAccess 配置。
最小项目结构
src/main/kotlin/example/
├── Application.kt
├── controller/
│ ├── AkoController.kt
│ ├── MenuController.kt
│ ├── ModelController.kt
│ └── AuthController.kt
└── model/
├── Student.kt
└── Group.kt
src/main/resources/conf/
└── application.properties事务与软删除
ako-rain 的标准模型接口会在分页、保存和删除操作外围开启事务。JPA 方向的 CompleteModel 设计上继承软删除模型;配套的 SoftDeleteAccess 尝试把删除操作重写为更新删除时间,而不是直接物理删除。
当前开发快照的 QueryRewriter 仍需要验证,详见 数据访问与事务 的软删除说明。
这只是当前 JVM + JPA 实现的默认行为。其他适配器可以使用自己的事务和删除策略,但应在数据与安全文档中明确说明。
运行检查
启动后检查:
curl http://localhost:17777/api/ako/menu/list/manager
curl -X POST http://localhost:17777/api/ako/model/page/Student \
-H 'Content-Type: application/json' \
-d '{"page":1,"size":20,"params":{},"sort":{}}'如果 models 为空,优先检查 Access 是否继承 AkoAccess/SoftDeleteAccess、模型包是否在 rain.scanPackages 内,以及 AkoRain 是否已经注册。
完整的真实页面示例见 Ako 快速开始的运行效果。
进一步使用
主流程跑通后,再按需要阅读: