# pf4j **Repository Path**: yangshangwei/pf4j ## Basic Information - **Project Name**: pf4j - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-09-29 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Boot + PF4J 插件化架构示例 这是一个基于Spring Boot和PF4J框架的插件化架构演示项目。 ## 🚀 项目简介 本项目演示了如何在Spring Boot应用中集成PF4J插件框架,实现可插拔和可扩展的模块化架构。 ### 核心组件 - **ExtensionPoint(扩展点)**: `Greeting` 接口定义插件规范 - **Plugin(插件)**: `greeting-plugin` 独立插件模块 - **PluginManager(插件管理器)**: 负责插件的加载、卸载和调用 ## 📁 项目结构 ``` pf4j/ ├── src/main/java/com/artisan/pf4j/ │ ├── api/Greeting.java # 扩展点接口 │ ├── config/PluginConfig.java # 插件配置 │ ├── controller/GreetingController.java # 控制器 │ └── Pf4jApplication.java # 主应用 ├── greeting-plugin/ # 示例插件模块 │ ├── src/main/java/com/artisan/plugin/ │ │ ├── GreetingPlugin.java # 插件主类 │ │ └── GreetingExtension.java # 扩展实现 │ └── pom.xml # 插件Maven配置 ├── plugins/ # 插件部署目录 ├── build-plugin.bat # 插件构建脚本 └── start-app.bat # 应用启动脚本 ``` ## 🛠️ 快速开始 ### 1. 构建和部署插件 运行插件构建脚本: ```bash # Windows build-plugin.bat # Linux/Mac chmod +x build-plugin.sh ./build-plugin.sh ``` ### 2. 启动应用 ```bash # Windows start-app.bat # Linux/Mac 或直接使用Maven mvn spring-boot:run ``` ### 3. 测试插件功能 应用启动后,访问以下接口: - **问候接口**: http://localhost:8080/greet?name=张三 - **插件信息**: http://localhost:8080/plugins ## 🔧 API接口说明 ### GET /greet 调用插件的问候功能 **参数**: - `name` (可选): 姓名,默认为 "World" **示例**: ``` GET /greet?name=张三 响应: 🎉 Hello 张三, from Greeting Plugin! 欢迎使用PF4J插件框架! ``` ### GET /plugins 查看已加载的插件信息 **示例响应**: ``` Loaded plugins: - Plugin ID: greeting-plugin, Version: 1.0.0, State: STARTED Greeting extensions found: 1 ``` ## 🔌 插件开发指南 ### 1. 创建插件项目 参考 `greeting-plugin` 模块结构: ```java // 插件主类 public class YourPlugin extends Plugin { public YourPlugin(PluginWrapper wrapper) { super(wrapper); } @Override public void start() { // 插件启动逻辑 } @Override public void stop() { // 插件停止逻辑 } } // 扩展实现 @Extension public class YourExtension implements Greeting { @Override public String sayHello(String name) { return "Your custom greeting: " + name; } } ``` ### 2. 配置插件描述 在 `pom.xml` 中配置插件信息: ```xml com.your.package.YourPlugin your-plugin-id ${project.version} Your Name Your plugin description ``` ### 3. 创建扩展索引 在 `src/main/resources/META-INF/extensions.idx` 中列出所有扩展类: ``` com.your.package.YourExtension ``` ### 4. 构建和部署 1. 构建插件: `mvn clean package` 2. 将生成的jar文件复制到 `plugins/` 目录 3. 重启应用或使用热加载 ## 🌟 特性 - ✅ **插件热插拔**: 支持运行时加载和卸载插件 - ✅ **解耦设计**: 宿主应用只依赖接口,不依赖具体实现 - ✅ **Spring Boot集成**: 天然支持Spring Boot生态 - ✅ **生命周期管理**: 完整的插件生命周期管理 - ✅ **易于扩展**: 简单的接口定义和实现方式 ## 🎯 适用场景 - 大型SaaS系统的模块化扩展 - 桌面应用的插件系统 - 企业级平台的第三方扩展支持 - 微服务架构中的功能模块热更新 ## 📚 相关文档 - [PF4J官方文档](https://pf4j.org/) - [Spring Boot官方文档](https://spring.io/projects/spring-boot) ## 🤝 贡献 欢迎提交Issue和Pull Request来改进这个项目!