盘点Spring/Boot的那些常用扩展点( 五 )


3、
也是启动过程的一个扩展点 。
在启动过程 , 会回调这个类的实现方法 , 传入 。
那怎么用呢?
依然是SPI 。
SPI加载
然后遍历所有的实现 , 依次调用
调用
这里就不演示了 , 实现接口 , 按照如下这种配置就行了
但是这里需要注意的是 , 此时传入的并没有调用过方法 , 也就是里面是没有Bean对象的 , 一般这个接口是用来配置 , 而不是用来获取Bean的 。
4、ssor
ssor在启动过程中 , 也会调用 , 也是通过SPI机制来加载扩展的 。
ssor
ssor是用来处理ent的 , 也就是一些配置信息 , 所有的配置都是存在这个对象的 。
说这个类的主要原因 , 主要不是说扩展 , 而是他的一个实现类很关键 。
这个类的作用就是用来处理外部化配置文件的 , 也就是这个类是用来处理配置文件的 , 通过前面提到的解析配置文件 , 放到ent里面 。
5、和
和都是在成功启动之后会调用 , 可以拿到启动时的参数 。
那怎么扩展呢?
当然又是SPI了 。
动图封面
这两个其实不是通过SPI机制来扩展 , 而是直接从容器中获取的 , 这又是为啥呢?
因为调用和时 , 已经启动成功了 , 容器都准备好了 , 需要什么Bean直接从容器中查找多方便 。
而前面说的几个需要SPI机制的扩展点 , 是因为在启动的时候 , 容器还没有启动好 , 也就是无法从容器获取到这些扩展的对象 , 为了兼顾扩展性 , 所以就通过SPI机制来实现获取到实现类 。
刷新上下文和调用加载和调用
所以要想扩展这个点 , 只需要实现接口 , 添加到容器就可以了 。
加载和调用
所以要想扩展这个点 , 只需要实现接口 , 添加到容器就可以了 。
【盘点Spring/Boot的那些常用扩展点】 Event 事件
Event 事件可以说是一种观察者模式的实现 , 主要是用来解耦合的 。当发生了某件事 , 只要发布一个事件 , 对这个事件的监听者(观察者)就可以对事件进行响应或者处理 。
举个例子来说 , 假设发生了火灾 , 可能需要打119、救人 , 那么就可以基于事件的模型来实现 , 只需要打119、救人监听火灾的发生就行了 , 当发生了火灾 , 通知这些打119、救人去触发相应的逻辑操作 。
什么是 Event 事件
那么是什么是 Event 事件 , 就是实现了这种事件模型 , 你只需要基于提供的API进行扩展 , 就可以完成事件的发布订阅
提供的事件api:
事件的父类 , 所有具体的事件都得继承这个类 , 构造方法的参数是这个事件携带的参数 , 监听器就可以通过这个参数来进行一些业务操作 。
事件监听的接口 , 泛型是子类需要监听的事件类型 , 子类需要实现 , 参数就是事件类型 , 方法的实现就代表了对事件的处理 , 当事件发生时 , 会回调方法的实现 , 传入发布的事件 。
isher
isher
事件发布器 , 通过方法就可以发布一个事件 , 然后就可以触发监听这个事件的监听器的回调 。
实现了isher接口 , 所以通过就可以发布事件 。