应用生命周期
启动流程
Application.start() 依次执行以下工作:
- 读取
rain.runMode和rain.launchPackage系统属性。 - 创建并初始化
ConfigImpl。 - 创建 DI 上下文
ContextImpl。 - 获取
AppLoader,扫描并注册 Bean、Loader 与应用服务。 - 按优先级启动全部
ApplicationService。 - 发布
AppStatusEvent.AppStarted。 - 注册 JVM shutdown hook。
在存在 pom.xml、build.gradle 或 build.gradle.kts 的目录中启动时,默认运行模式为 dev;否则默认落到 prod。
停止流程
应用停止时先发布 AppStatusEvent.AppStopping,再依次调用应用服务的 stop()。
kotlin
class StorageService : ApplicationService {
override fun priority() = 20
override fun start() {
// 建立连接
}
override fun stop() {
// 释放资源
}
}WARNING
当前实现中服务停止顺序与启动顺序相同,并非反向顺序。设计依赖关系时不要假设后启动的服务会先停止。