首页 > 其他分享 >Solon2 开发之插件,一、插件

Solon2 开发之插件,一、插件

时间:2023-02-13 22:23:13浏览次数:55  
标签:插件 生命周期 void throws 开发 Solon2 Throwable public

Solon Plugin 是框架的核心接口,简称“插件”。其本质是一个“生命周期”接口。它可让一个组件类参与程序的生命周期过程(这块看下:《应用启动过程与完整生命周期》):

@FunctionalInterface
public interface Plugin {
    //启动
    void start(AopContext context) throws Throwable;
    //预停止
    default void prestop() throws Throwable{}
    //停止
    default void stop() throws Throwable{}
}

目前对它的使用主要有两种方式:

1、做为具有生命周期的组件使用

做为注解组件,实例产生后会加入 SolonApp 实例的 plugins 列表,并会执行 start 接口,当程序停止时会触发 stop 接口。

这个方式,一般是需要对一些有生命周期的对象进行管理,比如通讯服务:

@Component
public class StompServerPlugin implements Plugin {
    @Inject("${server.stopm.port}")
    int port;
    
    StompServer server;
    
    @Override
    public void start(AopContext context) throws Throwable {
        server = new StompServer(port);
        server.start();
    }

    @Override
    public void stop() throws Throwable {
        server.stop();
    }
}

目前,这个方式较少使用(有大量的通讯服务或有生命周期对象已被封装成插件)。如无必要,也不建议使用。

2、做为一个模块生命周期的对接使用,为框架或业务提供扩展能力

生态体系里的所有插件的封装,都基于这个方式。也是最常使用的场景。

  • 在这个方式里,不能使用注解能力(为了绝对的安全)
  • 且需要使用配置文件申明插件(为了获得更早的执行时机)
public class XPluginImpl implements Plugin {
    @Override
    public void start(AopContext context) throws Throwable {
        //...
    }

    @Override
    public void stop() throws Throwable {
        
    }
}

具体看一下《插件扩展机制(Spi)》

标签:插件,生命周期,void,throws,开发,Solon2,Throwable,public
From: https://www.cnblogs.com/noear/p/17118049.html

相关文章

  • Solon2 开发之IoC,九、自定义注解开发汇总
    1、定义构建能力注解,比如@Controller注解类:@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceController{}注解类......
  • BurpSuite插件——新建UI界面且监听访问HTTP信息
    一、写在前面很久没更新了,一个是事情比较多、杂,而且这段时间有很多新知识和认知的冲击,不得不停下来沉淀一下。今天起正式开始一个新的模块——burp插件开发。 二、......
  • 开学初软件工程第一次课进行课前测试,要求实现一个完整MIs系统的开发流程
    本次测试经历了三个小时,这次测试使沉醉在假期的我惊醒,我意识到我仍是一名学生,我还有许多的东西要去学习。我先去复习上学期的增删改查,连接数据库之类的知识,之后开始写代码,......
  • stm32部署开发程序
    stm32嵌入式开发的流程如下:1.下载安装程序环境2.依照需求文档和硬件原理图用CubeMX配置引脚3.依据架构方案,搭建基础架构,添加程序功能一、下面开始讲述程序环境的安......
  • 图片放大插件zoomify
         地址:https://github.com/indrimuska/zoomify<scripttype="text/javascript"> $('.exampleimg').zoomify(); </script> ......
  • 一大波嵌入式毕业设计选题推荐(配套源码、文档、开发板)
    文章末尾有所有项目的配套源码及文档下载说明!!嵌入式毕业设计选题推荐一:智能猫眼项目功能介绍:1.  人脸识别:基于​百度专业的深度学习算法和海量数据训练可进行人脸识别,轻......
  • Commitizen辅助开发者使用Git提交规则
    ​​Commitizen​​是一个提交日志工具,辅助开发者使用提交规则全局安装安装​​Commitizen​​npminstall-gcommitizen安装​​Adapter​​​​¶​​​​Commitizen​......
  • 22 插件
    1、功能:用于增强Vue2、本质:包含install方法的一个对象,install的第一个参数的Vue,第二个及以后的参数是插件使用这传递的数据。定义插件:  对象.install=function(Vu......
  • springboot开发日记(12)——请求映射原理
    请求映射原理由于springboot底层使用的是springMVC,所以研究请求映射原理我们需要从DispatcherServlet入手,搜索DispatcherServlet这个包,我们可以发现他是一个继承类,打开继......
  • 互联网医院开发改善了传统医疗的哪些痛点
      在医疗资源短缺、医患关系非常紧张的当下,医疗资源分配的非常不均匀,还有很多的地方患者看病难,付不起医药费等,这些传统医疗的痛点都加速了移动医疗的发展,互联网医......