# sweet-plugin **Repository Path**: bluesweeter/sweet-plugin ## Basic Information - **Project Name**: sweet-plugin - **Description**: Sweet-Plugin是基于Spring Boot开发的插件管理框架,采用SideCar边车运行模式,与主程序一起启动,但具有自己的生命周期,支持动态安装、卸载、启动和停止插件功能。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 4 - **Created**: 2023-06-19 - **Last Updated**: 2025-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, plugin, 插件, sidecar ## README ## 简介 Sweet-Plugin是基于Spring Boot开发的插件管理框架,采用`sidecar`边车运行模式,与主程序一起启动,但具有自己的`生命周期`,可以动态安装、卸载、启动和停止插件功能。 ![技术架构](./_media/platform.png ':size=40%') ## 特性 * 插件采用标准的SpringBoot Application开发和运行,具有独立、完整的生命周期管理; * `主程序ApplicationContext`与`插件ApplicationContext`完全隔离,通过扩展接口进行通讯; * 使用`maven`打包插件,支持对插件的自主打包编译,支持打包成jar、zip和文件夹多种方式; * 插件具有独立的类加载器,支持插件定义各种的依赖jar包; * 插件可以使用`主程序`的类包; * 插件可以使用`主程序`的环境变量和yml配置参数; * 插件可以定义`@Autowired`优先级别,例如:优先主程序后插件、优先插件后主程序、只查找插件等; * 插件可以通过`@Extension`向`主程序`暴露实现; * 插件支持自定义@Controller控制器,同时监听插件生命周期自动卸载和启用; * 插件支持AOP工厂,动态扩展业务功能,同时监听插件生命周期自动卸载和启用; * 插件支持插件工厂,动态扩展一组业务功能,同时监听插件生命周期自动卸载和启用; ## 使用方法 1)引入依赖 修改pom.xml,引入sweet-plugin-spring-boot-starter包 ```xml com.gitee.bluesweeter sweet-plugin-spring-boot-starter 发布版本>=1.2.2 ``` 2)在SpringBoot启动类中加入@EnableEgdPlugin启动插件机制 ```java @SpringBootApplication @EnableEgdPlugin public class SweetApiWebApplication { public static void main(String[] args) { SpringApplication.run(SweetApiWebApplication.class, args); } } ``` 3)引入需要插件 插件运行文件夹默认在`classes/plugins`文件夹中,需要修改pom.xml: 第一步,先引入插件,例如:以下引入开发好的`restful`插件,以`zip`格式 ```xml ... com.egrand.sweetapi.plugin sweet-api-plugin-restful 1.2.1-SNAPSHOT zip ... ``` 第二步,增加一个`maven-dependency-plugin`插件声明,将zip文件复制到`classes/plugins`文件夹中 ```xml org.apache.maven.plugins maven-dependency-plugin 2.8 plugin-process-resources copy-dependencies process-resources ${project.build.directory}/classes/plugins false zip ```