# 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`边车运行模式,与主程序一起启动,但具有自己的`生命周期`,可以动态安装、卸载、启动和停止插件功能。

## 特性
* 插件采用标准的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
```