Solon 框架的应用生命周期包括:一个初始化函数时机点 + 六个事件时机点 + 两个插件生命时机点 + 两个容器生命时机点(v2.2.0 版本的状态):

提醒:

  • 启动过程完成后,项目才能正常运行(启动过程中,不能把线程卡死了)
  • AppBeanLoadEndEvent 之前的事件,需要启动前通过 EventBus.subscribe(...) 订阅

1、一个初始化函数时机点

@SolonMain
public class App{
public static void main(String[] args){
Solon.start(App.class, args, (app)->{
//应用初始化时间点
});
}
}

2、六个事件时机点

事件说明

事件 说明
6.AppInitEndEvent 应用初始化完成事件
8.AppPluginLoadEndEvent 应用插件加载完成事件
b.AppBeanLoadEndEvent 应用Bean加载完成事件(即扫描完成)
e.AppLoadEndEvent 应用加载完成事件
::运行
g.AppPrestopEndEvent 应用预停止事件
j.AppStopEndEvent 应用停止事件

事件订阅示例

  • AppLoadEndEvent
@Component
public class AppLoadEndEventListener implements EventListener<AppLoadEndEvent>{
@Override
public void onEvent(AppLoadEndEvent event) throws Throwable {
//event.app(); //获取应用对象
}
}
  • AppStopEndEvent,v2.1.0 后支持
@Component
public class AppStopEndEventListener implements EventListener<AppStopEndEvent>{
@Override
public void onEvent(AppStopEndEvent event) throws Throwable {
//event.app(); //获取应用对象
}
}

3、两个插件生命时机点

插件的本质,即在应用生命周期中获得关键执行时机的接口。从而有效获得应用扩展能力。

  • 插件接口 Plugin
@FunctionalInterface
public interface Plugin {
void start(AopContext context) throws Throwable;
default void prestop() throws Throwable{}
default void stop() throws Throwable{}
}
  • 执行时机
接口 执行时机 说明
7.start 在应用初始化完成后执行 启动
f.prestop 在 ::stop 前执行 预停止
h.stop 在 Solon::stop 时执行 停止(启用安全停止时,prestop 后等几秒再执行 stop)

4、两个容器生命时机点

接口 执行时机 说明
d.start 在扫描完成之后执行 启动
i.stop 在 Solon::stop 时执行 停止

Solon2 的应用生命周期的更多相关文章

  1. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  2. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  3. C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)

    本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...

  4. UIViewController生命周期-完整版

    一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load   (NSObje ...

  5. angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

    今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:

  6. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

  7. Autofac - 生命周期

    实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用 ...

  8. 【微信小程序开发•系列文章六】生命周期和路由

    这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...

  9. Xamarin.Android活动的生命周期

    一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的, ...

  10. Mono产品生命周期

    软件生命周期 同任何事物一样,一个软件产品或软件系统也要经历孕育.诞生.成长.成熟.衰亡等阶段,一般称为软件生命周期(软件生存周期) .软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期 ...

随机推荐

  1. SQL语句筛选/查询

    目录 SQL语句查询关键词 查询关键字之where筛选 查询关键字之分组 group by Group_concat 方法 查询关键字之having过滤 查询关键字之去重distinct 关键字之or ...

  2. windows上用vs2017静态编译onnxruntime-gpu CUDA cuDNN TensorRT的坎坷之路

    因为工作业务需求的关系,需编译onnxruntime引入项目中使用,主项目exe是使用的vs2017+qt5.12. onnxruntime就不用介绍是啥了撒,在优化和加速AI机器学习推理和训练这块赫 ...

  3. python 实现AES加解密

    AES 只是个基本算法,实现 AES 有几种模式,主要有 ECB.CBC.CFB 和 OFB  CTR,直接上代码,此处为AES加密中的CBC模式,EBC模式与CBC模式相比,不需要iv. impor ...

  4. Python Kconfiglib初次学习

    1 参考 kconfiglib库官方介绍:kconfiglib · PyPI Kconfiglib源码:GitHub - ulfalizer/Kconfiglib: A flexible Python ...

  5. forms组件渲染标签、展示信息、校验数据的一些补充,forms组件参数和源码剖析,modelform组件,Django中间

    今日内容 forms组件渲染标签 forms组件渲染标签的方式1 <p>forms组件渲染标签的方式1</p> {{ form_obj.as_p }} {{ form_obj. ...

  6. Echarts点击多组数据多个柱子中的一个柱子,获取当前点击的是第几组数据,并获取点击的是当前组别第几根柱子,以及对应横坐标,

    遇到一需求,一般都是点击图后获取其中一组数据就可以了,不需要详细到获取点击了当前X轴对应的其中的哪个, 今天的需求是 Echarts点击多组数据多个柱子中的一个柱子,获取当前点击的是第几组数据,并获取 ...

  7. 动力节点—day05

    数组 Java语言当中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object 数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据集合),多个数据元素的类型必须是一致的 数组当中 ...

  8. golang主协程等待子协程执行完毕

    无限等待 计时等待 channel通信 select 等待组

  9. Unity模块嵌入到Android中

    嗨,大家好,小黑在沉寂了6个月之后,终于要继续写一篇博客了. 先吐槽一波上家公司PHD&&OMS,不吐不快.上家公司的小黑,每天不是在弄UIWidgets,就是再弄UIWidgets, ...

  10. 【分析笔记】全志平台 TWI 上拉电压异常的问题

    记录说明 原本这么简单的芯片,没有必要做记录,后来发现其中有一颗单独挂在 TWI2 无法通信,而主要原因是最容易忽视的电源域的问题,因此记录一下这件事情. 芯片介绍 MCP3021 是一颗 10BIT ...