首页 > 其他分享 >Solon2 开发之插件,三、插件体外扩展机制(E-Spi)

Solon2 开发之插件,三、插件体外扩展机制(E-Spi)

时间:2023-02-13 22:35:35浏览次数:46  
标签:插件 插件包 demo 扩展 jar Spi ext Solon2

插件体外扩展机制,简称:E-Spi。用于解决 fatjar 模式部署时的扩展需求。比如:

  • 把一些“业务模块”做成插件包放到体外
  • 把数据源配置文件放到体外,方便后续修改

其中, .properties 或 .yml 文件都会做为扩展配置加载,.jar 文件会做为插件包加载。

1、特点说明

  • 所有插件包共享ClassLoader、AopContext、配置
  • 可以打包成一个独立的插件包(放在体外加载),也可以与主程序一起打包。“分”或“合”自由!
  • 更新体外插件包或配置文件后,需要重启主服务
  • E-Spi 是由内核直接提供的支持,不需要其它依赖

2、操作说明

  • 应用属性文件添加扩展目录配置

目录需要手动创建

#申明扩展目录为 demo_ext(没有时,不会异常)
solon.extend: "demo_ext"

也可以,目录自动创建。不同的场景可以不同选择

#申明扩展目录为 demo_ext(加!开头,表示自动创建)
solon.extend: "!demo_ext"
  • 文件放置关系

将一个应用的数据源配置放在扩展目录,以便后续修改,部署效果:

demo.jar
demo_ext/_db.properties

再将一个用户频道或者领域模块做为插件包,部署效果:

demo.jar
demo_ext/_db.properties
demo_ext/demo_user.jar
demo_ext/demo_order.jar 

3、插件包注意事项

  • 要么把插件包打成 fatjar
  • 要么把插件包的依赖打进主应用里,特别的是公共的依赖(推荐)

4、具体演示示例

demo2002-external_ext

标签:插件,插件包,demo,扩展,jar,Spi,ext,Solon2
From: https://www.cnblogs.com/noear/p/17118075.html

相关文章

  • Solon2 开发之插件,四、插件热插拔管理机制(H-Spi)
    插件热插拔管理机制,简称:H-Spi。是框架提供的生产时用的另一种高级扩展方案。相对E-Spi,H-Spi更侧重隔离、热插热拔、及管理性。应用时,是以一个业务模块为单位进行开发,且封......
  • Solon2 开发之IoC,十、Bean 在容器的两层信息
    1、剖析Bean的装包与注册过程比如,用配置器装配一个Bean(本质是装配出一个BeanWrap,并自动注册到容器):@ConfigurationpublicclassConfig{//同时以名字和类型进......
  • Solon2 开发之插件,一、插件
    SolonPlugin是框架的核心接口,简称“插件”。其本质是一个“生命周期”接口。它可让一个组件类参与程序的生命周期过程(这块看下:《应用启动过程与完整生命周期》):@Function......
  • Solon2 开发之IoC,九、自定义注解开发汇总
    1、定义构建能力注解,比如@Controller注解类:@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceController{}注解类......
  • BurpSuite插件——新建UI界面且监听访问HTTP信息
    一、写在前面很久没更新了,一个是事情比较多、杂,而且这段时间有很多新知识和认知的冲击,不得不停下来沉淀一下。今天起正式开始一个新的模块——burp插件开发。 二、......
  • Spider理论系列-bs4
    写在前面bs4最直接的应用就是我在爬取​​Spider实战系列-爬取鬼吹灯小说_浅辄的技术博客_51CTO博客​​这一篇里,我同时使用了bs4和xpath,相对于特定的情况,速度也会有所......
  • 图片放大插件zoomify
         地址:https://github.com/indrimuska/zoomify<scripttype="text/javascript"> $('.exampleimg').zoomify(); </script> ......
  • 22 插件
    1、功能:用于增强Vue2、本质:包含install方法的一个对象,install的第一个参数的Vue,第二个及以后的参数是插件使用这传递的数据。定义插件:  对象.install=function(Vu......
  • laydate插件实现时间选择器
    文章目录​​一、前言:​​​​二、年选择器:​​​​1、引入js和css文件:​​​​2、写一个input标签:​​​​3、执行一个laydate实例​​​​4、页面效果:​​​​三、年月选......
  • 利用bootstrap-table插件自带的打印功能打印表格
    文章目录​​1、前端代码:​​​​2、前端页面:​​​​1、表格数据展示​​​​2、点击打印按钮之后:​​​​3、插件下载地址:​​​​4、碰到的bug​​1、前端代码:<linkhre......