Skip to content

应用生命周期

启动流程

Application.start() 依次执行以下工作:

  1. 读取 rain.runModerain.launchPackage 系统属性。
  2. 创建并初始化 ConfigImpl
  3. 创建 DI 上下文 ContextImpl
  4. 获取 AppLoader,扫描并注册 Bean、Loader 与应用服务。
  5. 按优先级启动全部 ApplicationService
  6. 发布 AppStatusEvent.AppStarted
  7. 注册 JVM shutdown hook。

在存在 pom.xmlbuild.gradlebuild.gradle.kts 的目录中启动时,默认运行模式为 dev;否则默认落到 prod

停止流程

应用停止时先发布 AppStatusEvent.AppStopping,再依次调用应用服务的 stop()

kotlin
class StorageService : ApplicationService {
    override fun priority() = 20

    override fun start() {
        // 建立连接
    }

    override fun stop() {
        // 释放资源
    }
}

WARNING

当前实现中服务停止顺序与启动顺序相同,并非反向顺序。设计依赖关系时不要假设后启动的服务会先停止。

基于 Apache License 2.0 发布