精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

「炸裂擴展力!」用 Spring Boot + PF4J 玩轉插件化模塊

開發 開發工具
PF4J(Plugin Framework for Java)?以輕量級、易集成和良好的擴展性而受到越來越多團隊的青睞。特別是結合 Spring Boot,它能夠讓我們快速構建?插件化架構,支持模塊的獨立開發、運行時加載與卸載,大大提升了應用的靈活度和可維護性。

前言

在實際的大型應用開發中,系統往往會不斷演進,功能也越來越龐雜。如何讓業務模塊具備 可插拔性 和 動態擴展能力,是架構設計中繞不開的關鍵問題。傳統做法通常會采用 SPI 機制OSGi 框架 或者自研的一套模塊化方案,但這些方式要么過于復雜,要么維護成本高。

相比之下,PF4J(Plugin Framework for Java) 以輕量級、易集成和良好的擴展性而受到越來越多團隊的青睞。特別是結合 Spring Boot,它能夠讓我們快速構建 插件化架構,支持模塊的獨立開發、運行時加載與卸載,大大提升了應用的靈活度和可維護性。

本文將結合實際案例,帶你一步步完成 Spring Boot + PF4J 的集成實踐。完整示例代碼可在此處查看:樣例代碼倉庫

為什么選擇 PF4J?

在眾多插件框架中,PF4J 的優勢非常明顯:

  • 熱插拔能力:插件 jar 包可以在運行時動態加載、卸載或更新,而無需重啟主程序;
  • 強解耦:宿主應用只依賴擴展點接口,插件只需實現接口,雙方通過契約交互;
  • 天然兼容 Spring Boot:直接支持 Spring Boot 集成,開發者無需編寫額外適配層;
  • 生態成熟:支持 Maven/Gradle 打包,內置完善的插件生命周期管理。

PF4J 核心由三部分構成:

  1. ExtensionPoint:擴展點接口,定義宿主與插件的契約;
  2. Plugin:插件實現,打成單獨 jar 包獨立部署;
  3. PluginManager:插件管理器,負責加載、啟停與調度插件。

宿主應用只依賴擴展點,插件通過實現擴展點與宿主解耦,這正是模塊化架構的核心價值。

實踐樣例

添加依賴

在 spring-boot 項目的 pom.xml 中引入:

<dependency>
    <groupId>org.pf4j</groupId>
    <artifactId>pf4j</artifactId>
    <version>3.9.0</version>
</dependency>


<!-- 可選:Spring Boot 集成支持 -->
<dependency>
    <groupId>org.pf4j</groupId>
    <artifactId>pf4j-spring</artifactId>
    <version>0.8.0</version>
</dependency>

定義擴展點接口

路徑:/src/main/java/com/icoderoad/plugin/api/Greeting.java

package com.icoderoad.plugin.api;


import org.pf4j.ExtensionPoint;


public interface Greeting extends ExtensionPoint {
    String sayHello(String name);
}

宿主應用配置 PF4J

路徑:/src/main/java/com/icoderoad/config/PluginConfig.java

package com.icoderoad.config;


import org.pf4j.DefaultPluginManager;
import org.pf4j.PluginManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class PluginConfig {


    @Bean
    public PluginManager pluginManager() {
        // 默認從 ./plugins 目錄加載插件
        PluginManager pluginManager = new DefaultPluginManager();
        pluginManager.loadPlugins();
        pluginManager.startPlugins();
        return pluginManager;
    }
}

 插件工程開發

新建一個獨立的 Maven Module 作為插件工程,例如:greeting-plugin

GreetingPlugin.java

路徑:/greeting-plugin/src/main/java/com/icoderoad/plugin/GreetingPlugin.java

package com.icoderoad.plugin;


import org.pf4j.Plugin;
import org.pf4j.PluginWrapper;


public class GreetingPlugin extends Plugin {
    public GreetingPlugin(PluginWrapper wrapper) {
        super(wrapper);
    }


    @Override
    public void start() {
        System.out.println("GreetingPlugin started!");
    }


    @Override
    public void stop() {
        System.out.println("GreetingPlugin stopped!");
    }
}

GreetingExtension.java

路徑:/greeting-plugin/src/main/java/com/icoderoad/plugin/GreetingExtension.java

package com.icoderoad.plugin;


import com.icoderoad.plugin.api.Greeting;
import org.pf4j.Extension;


@Extension
public class GreetingExtension implements Greeting {
    @Override
    public String sayHello(String name) {
        return "Hello " + name + ", from Greeting Plugin!";
    }
}

插件索引文件

路徑:/greeting-plugin/src/main/resources/META-INF/extensions.idx

com.icoderoad.plugin.GreetingExtension

宿主應用調用插件

路徑:/src/main/java/com/icoderoad/controller/GreetingController.java

package com.icoderoad.controller;


import com.icoderoad.plugin.api.Greeting;
import org.pf4j.PluginManager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


import java.util.List;


@RestController
public class GreetingController {


    private final PluginManager pluginManager;


    public GreetingController(PluginManager pluginManager) {
        this.pluginManager = pluginManager;
    }


    @GetMapping("/greet")
    public String greet(String name) {
        List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);
        if (greetings.isEmpty()) {
            return "No Greeting plugin found!";
        }
        return greetings.get(0).sayHello(name);
    }
}

 插件部署

  1. 將 greeting-plugin 模塊打包為 greeting-plugin-1.0.0.zip 或 .jar
  2. 拷貝到宿主項目的 ./plugins/ 目錄;
  3. 啟動 Spring Boot 應用;
  4. 訪問 http://localhost:8080/greet?name=Tom,即可看到插件輸出結果。

總結

通過以上步驟,我們實現了一個 Spring Boot 集成 PF4J 的插件化架構

  • 插件通過擴展點與宿主應用徹底解耦;
  • 系統支持運行時動態加載與卸載插件;
  • 開發者可獨立構建插件模塊,快速擴展業務功能。

這種架構尤其適用于以下場景:

  • 大型 SaaS 平臺:按租戶、功能模塊提供靈活擴展;
  • 桌面/工具類應用:支持用戶自由安裝插件;
  • 企業級產品平臺:允許第三方開發者貢獻插件,形成生態閉環。

借助 Spring Boot + PF4J,我們能夠快速搭建出一個 高擴展、可演化的模塊化系統,既能保持主應用的簡潔穩定,又能為未來的功能擴展預留充足空間。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-02-12 07:13:54

Knife4jAPISpringBoot

2025-05-20 09:31:19

2021-10-30 06:55:09

iPhone iOS蘋果

2025-04-07 03:00:00

SpringBoot數據庫

2025-11-21 08:08:57

2021-12-11 13:29:36

SpringBoot 官方

2023-10-15 22:40:25

插件JIB

2024-11-27 09:58:41

Spring模塊化管理方式

2025-07-02 10:06:32

2025-10-20 01:10:00

Spring自動化數據

2024-10-11 18:31:14

2025-09-01 01:33:00

2024-01-10 08:20:13

參數轉換技巧

2025-02-17 04:00:00

SpringDgraph系統

2023-10-07 10:08:54

2025-08-28 07:13:17

2021-07-14 10:14:25

Docker IDEA開發

2024-11-25 08:00:00

2025-02-08 08:16:16

2017-04-28 08:32:40

Spring BootDubbo Activ使用
點贊
收藏

51CTO技術棧公眾號

欧美日韩一区二区免费视频| 全球成人免费直播| 亚洲综合免费观看高清完整版 | 精品亚洲porn| 色综合久久久888| 好吊日免费视频| 99蜜月精品久久91| 一区二区三区日韩精品视频| 鲁丝一区二区三区免费| 一炮成瘾1v1高h| 在线观看不卡| 日韩在线视频网站| 熟妇人妻久久中文字幕| 久久亚洲精品爱爱| 亚洲一区视频在线| 亚洲国产精品综合| 人人妻人人澡人人爽精品日本| 天堂久久久久va久久久久| 久久中文字幕一区| 91精品人妻一区二区三区| 国产午夜久久av| 91福利在线导航| 大伊香蕉精品视频在线| 91caoporn在线| av在线不卡网| 亚洲最大的av网站| 自拍偷拍色综合| 国产一区二区三区成人欧美日韩在线观看 | 亚洲制服丝袜av| 亚洲成人精品电影在线观看| 日韩永久免费视频| 国产乱妇无码大片在线观看| 国产成一区二区| 日韩av免费网址| 欧美日韩一区自拍 | 亚洲一级生活片| 国产区精品视频在线观看豆花| 777亚洲妇女| 凹凸国产熟女精品视频| 91吃瓜在线观看| 一区二区三区中文字幕在线观看| 亚洲午夜精品久久久久久浪潮| 韩国中文字幕2020精品| 99久久99久久久精品齐齐| 成人午夜电影在线播放| 99精品视频免费看| 激情文学综合丁香| 国产免费一区二区三区香蕉精| 亚洲va在线观看| 亚洲一区亚洲| 国产91热爆ts人妖在线| 免费av网站在线| 性欧美videos另类喷潮| 青青草一区二区| 麻豆成人免费视频| 狂野欧美性猛交xxxx巴西| 日韩免费在线看| 黄色一级片免费在线观看| 亚洲综合二区| 国产99久久久欧美黑人| 69视频免费看| 六月婷婷色综合| 91色视频在线观看| 性一交一乱一透一a级| 懂色一区二区三区免费观看| 国产精品自拍首页| 日韩亚洲视频在线观看| 91亚洲精品一区二区乱码| 欧美激情第一页在线观看| 免费在线看v| 国产精品久线在线观看| 最新黄色av网站| 日本大胆在线观看| 精品久久久免费| 日本在线视频www| 国产69精品久久久久9999人| 欧美乱妇15p| 国产成人精品一区二区在线小狼| 66精品视频在线观看| 亚洲国产女人aaa毛片在线| 亚洲一区二区三区综合| 精品久久美女| 欧美男插女视频| 日本在线播放视频| 看片网站欧美日韩| eeuss一区二区三区| 色鬼7777久久| 亚洲欧洲日韩在线| 黄页网站在线观看视频| 日韩欧美一区二区三区在线观看| 欧美日韩精品三区| 亚洲v在线观看| 国产va免费精品观看精品视频 | 久久艹中文字幕| 91在线视频免费看| 亚洲成人免费影院| 亚洲一区在线不卡| 澳门成人av| 中文字幕在线观看亚洲| 日本五十熟hd丰满| 理论片日本一区| 国产一级特黄a大片99| 97视频在线观看网站| 亚洲成人av资源| 天天色综合社区| 久久97久久97精品免视看秋霞| 在线播放日韩欧美| 国产精品成人久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品av一区| 生活片a∨在线观看| 欧美日韩美女在线观看| 热久久久久久久久| 红桃成人av在线播放| 久久久久国产视频| 97人妻精品一区二区三区动漫 | 欧美日本韩国在线| 日本伦理一区二区| 欧美精品tushy高清| av网在线播放| 日韩午夜在线电影| 99在线看视频| 免费a级人成a大片在线观看| 色悠悠亚洲一区二区| 丝袜熟女一区二区三区| 亚洲一区在线| 国产一区欧美二区三区| 麻豆app在线观看| 亚洲成av人在线观看| 色网站在线视频| 日韩欧美中文| 国产精品看片资源| 狠狠狠综合7777久夜色撩人 | 妺妺窝人体色www在线小说| 懂色av色香蕉一区二区蜜桃| 亚洲最新在线视频| 日本熟女毛茸茸| 97久久久精品综合88久久| 国产精品久久久久9999爆乳| 成人豆花视频| 久热99视频在线观看| 一区二区精品视频在线观看| 国产欧美综合在线| 欧美xxxxx在线视频| 你懂的视频欧美| 欧美专区国产专区| 日本在线一二三| 日韩欧美福利视频| 国产精品815.cc红桃| 奶水喷射视频一区| 欧美日韩系列| 午夜无码国产理论在线| 国产小视频91| 亚洲精品91天天久久人人| 久久精品亚洲国产奇米99| 无码人妻丰满熟妇区毛片18| 校花撩起jk露出白色内裤国产精品| 97在线视频国产| 亚洲aaa在线观看| 色中色一区二区| 日本黄色小视频在线观看| 蜜臀久久久99精品久久久久久| 亚洲一区二区在线观| 四虎国产精品永久在线国在线| 久久综合久久八八| 老牛影视av牛牛影视av| 五月天婷婷综合| 中文字幕国产综合| 久久成人久久爱| www.18av.com| 亚洲aaa级| 国产精品影院在线观看| 超碰caoporn久久| 亚洲国产日韩欧美综合久久| 精品久久久久久久久久久久久久久久| 欧美国产国产综合| 午夜免费福利网站| 99在线精品免费视频九九视 | 91国偷自产一区二区三区观看| 免费看的黄色网| 国产一区二区视频在线播放| 国产真人做爰毛片视频直播| 精品国产乱码久久久久久果冻传媒 | 福利一区二区在线| 成人在线免费观看av| 第四色成人网| 国产二区一区| 国产综合av| 久久久久国产精品免费| 国产大片在线免费观看| 日韩三级免费观看| 亚洲va在线观看| 一区二区三区成人在线视频| 久久久久国产精品区片区无码| 久久精品国产免费| 男女激情无遮挡| 久久国产中文字幕| 国产在线视频欧美一区二区三区| 国产精品久久久久久久久免费高清| 欧美片一区二区三区| 国产大片在线免费观看| 精品国产一区二区在线观看| 艳妇乳肉豪妇荡乳av无码福利| 亚洲综合激情另类小说区| 在线观看日本中文字幕| 成人美女在线视频| 欧美美女一级片| 免费看黄裸体一级大秀欧美| 操bbb操bbb| 日本精品三区| 免费在线国产精品| 亚洲国产高清在线观看| 国产精品男人的天堂| 午夜激情电影在线播放| 久热精品视频在线观看一区| 国产美女视频一区二区三区 | av中文字幕在线| 亚洲娇小xxxx欧美娇小| 99产精品成人啪免费网站| 在线观看国产91| 五月婷婷亚洲综合| 亚洲资源在线观看| 国产97免费视频| 国产精品毛片久久久久久| 久久久精品人妻无码专区| 国产精品911| 天堂av.com| 美腿丝袜亚洲三区| 欧美精品成人网| 新狼窝色av性久久久久久| 国产精品国产亚洲精品看不卡| 欧美1区3d| 青青草原网站在线观看| 色男人天堂综合再现| 日产精品久久久一区二区| 亚洲精品日韩av| 激情久久免费视频| 成人久久一区二区| 95精品视频| 国产精品一区二区三| 123成人网| 国产精品一二区| 成人亚洲综合| 国产欧美韩国高清| 亚洲免费一区| 91欧美精品成人综合在线观看| 日韩电影精品| 91精品视频大全| 日韩精品免费视频一区二区三区| 成人国产精品久久久久久亚洲| 日韩午夜电影免费看| 国产欧美精品一区二区| 亚洲男女网站| 99国精产品一二二线| youjizzjizz亚洲| 好看的日韩精品| 欧美调教网站| 日产国产精品精品a∨| 色乱码一区二区三区网站| 中国成人在线视频| 午夜精品久久99蜜桃的功能介绍| 日韩精品手机在线观看| 影音先锋亚洲电影| 日本精品一区在线观看| 日韩电影在线免费看| 亚洲黄色av片| 成人精品国产一区二区4080| 欧美性xxxx图片| 欧美激情一区二区三区四区 | 激情久久av一区av二区av三区| 99热国产在线观看| 日韩欧美在线视频| 中文字幕一区二区三区免费看| 欧美精品日韩一本| 欧美视频在线观看一区二区三区| 亚洲国产日韩欧美综合久久| 成a人v在线播放| 欧美另类极品videosbestfree| wwwww亚洲| 国产精品久久久av久久久| 国产精品国产亚洲精品| 精品久久久久亚洲| 欧美激情理论| 久久精品视频16| 美女一区二区三区| yjizz视频| 国产精品麻豆视频| 日韩精品成人一区| 欧美日韩黄色一区二区| 天堂网av在线播放| 日韩最新av在线| 手机在线理论片| 成人做爰www免费看视频网站| 精品视频在线你懂得| 日韩欧美亚洲日产国产| 亚洲婷婷在线| 久久99999| av亚洲精华国产精华| 看黄色录像一级片| 欧美日韩国产限制| 99久久精品国产一区色| 亚洲天堂av女优| 18video性欧美19sex高清| 国产在线播放91| 丝袜美腿综合| av日韩在线看| 久久 天天综合| 在线观看国产精品一区| 亚洲一区二区三区国产| 91在线视频国产| 亚洲人成电影网站色www| 福利在线导航136| 91精品视频在线看| 精品国产中文字幕第一页 | 亚洲涩涩在线| 波多野结衣精品久久| 999国产精品视频| 欧美视频第三页| 91亚洲精华国产精华精华液| 美国黄色小视频| 欧美精品在线观看一区二区| 激情小视频在线| 91成人免费观看网站| caoporn成人免费视频在线| 日韩中文字幕亚洲精品欧美| 日本强好片久久久久久aaa| 草草影院第一页| 天天综合日日夜夜精品| 人妻视频一区二区三区| 欧美高清视频在线观看| 国产精品成人**免费视频| 亚洲高清123| 免费精品视频在线| 免费黄色片网站| 在线观看一区二区精品视频| 青青草免费在线视频| 136fldh精品导航福利| 红杏aⅴ成人免费视频| 成人免费在线网| 成人污污视频在线观看| 国产一级视频在线播放| 亚洲成人中文字幕| av漫画网站在线观看| 国内一区在线| 亚洲综合国产| 91久久免费视频| 在线观看视频91| 999在线视频| 国产自摸综合网| 欧美激情91| 中国特级黄色片| 精品久久久久久国产| 青青青草原在线| 国产精品扒开腿做爽爽爽视频| 不卡在线一区二区| 在线a免费观看| 亚洲一区自拍偷拍| 天堂在线中文网| 欧美孕妇孕交黑巨大网站| 国产在线日韩精品| 国产美女18xxxx免费视频| 日韩理论片中文av| 精品人妻一区二区三区三区四区| 欧美激情视频网站| 亚洲精品一级二级三级| 中文字幕第80页| 成人免费一区二区三区视频| 国产黄色av网站| 97在线观看免费| 欧美一区二区性| 91大神免费观看| 五月天婷婷综合| 天堂а√在线资源在线| 成人免费视频视频在| 亚洲人体偷拍| 卡一卡二卡三在线观看| 日韩一区二区麻豆国产| 欧美gv在线观看| 亚洲精品一区二区三区四区五区| 国产毛片精品一区| 国产高清中文字幕| 久久精品久久精品亚洲人| 国产无遮挡裸体免费久久| 午夜dv内射一区二区| 亚洲免费高清视频在线| 香港三日本三级少妇66| 成人国产精品一区二区| 亚洲美女一区| 97精品在线播放| 亚洲欧美日韩高清| 精品国产一区二| av免费在线播放网站| 一区二区三区 在线观看视频| 欧美精品久久久久久久久久丰满| 91人人爽人人爽人人精88v| 国产欧美日韩亚洲一区二区三区| 国产视频精品免费| 国产丝袜一区二区三区免费视频| 99久久99九九99九九九| 欧美少妇性生活视频|