[Java] Solon 框架的三大核心組件之一插件擴展體系

1、Solon 的三大核心組件

核心組件說明
Plugin 插件擴展機制提供“編碼風格”的擴展體系
Ioc/Aop 應用容器提供基于注入依賴的自動裝配體系
Context+Handler 通用上下文處理接口提供“開放式處理”適配體系(俗稱,三元合一)

2、Solon Plugin 插件擴展機制

幾種 Java 擴展機制:

擴展機制描述特點體驗風格適用性
Java SPIJava 自帶的以接口為單位配置風格適用于所有 Java 生態(最通用)
Spring FactoriesSpring 框架提供的以組件為單位配置風格適用于 Spring 生態體系
Solon PluginSolon 框架提供的以模塊為單位編碼風格適用于 Solon 生態體系

Solon Plugin 是 Java SPI 的一種“增強”模式,強調編碼風格。插件模塊元信息配置會申明一個 Plugin 接口的實現類,在應用啟動時掃描元信息目錄,以發現所有申明的插件實現。

Plugin 的接口定義:

public interface Plugin {//啟動void start(AppContext context) throws Throwable;//預停止default void prestop() throws Throwable{}//停止default void stop() throws Throwable{}
}

Plugin 實現類的元信息配置申明:以 META-INF/solon 為專屬目錄;使用 properties 格式;要配置插件的實現類及優先級。

# META-INF/solon/{packname}.propertiessolon.plugin={PluginImpl}   #插件實現類配置
solon.plugin.priority=1 #插件優化級配置。越大越優先,默認為0

3、Solon Plugin 插件示例

用一個數據緩存與事務相關的插件為例,以模塊為單位實現整體裝配(編碼風格):

public class DemoSolonPlugin implements Plugin {@Overridepublic void start(AppContext context) {if (context.app() != null) {//添加事務控制支持if (context.app().source().isAnnotationPresent(EnableTransaction.class)) {//添加注解攔截器context.beanInterceptorAdd(Tran.class, TranInterceptor.instance, 120);}//添加緩存控制支持if (context.app().source().isAnnotationPresent(EnableCaching.class)) {//添加注解攔截器context.beanInterceptorAdd(CachePut.class, new CachePutInterceptor(), 110);context.beanInterceptorAdd(CacheRemove.class, new CacheRemoveInterceptor(), 110);context.beanInterceptorAdd(Cache.class, new CacheInterceptor(), 111);}}//根據配置自動構建數據源context.beanMake(DataSourcesAutoConfiguration.class);}
}

插件應用示意:

@EnableTransaction
@EnableCaching
public class App {public static void main(String[] args) {Solon.start(App.class, args);}
}@Component
public class DemoService {@Cachepublic String test() {return new Date().toString();}@Tranpublic void post() {...}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66732.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TRELLIS微軟的圖生3D

TRELLIS 教程目錄: Youtube:https://www.youtube.com/watch?vJqFHZ-dRMhI 官網地址:https://trellis3d.github.io/ GitHub:https://github.com/Microsoft/TRELLIS 部署目錄: 克隆項目 git clone --recurse-submodul…

Java導出通過Word模板導出docx文件并通過QQ郵箱發送

一、創建Word模板 {{company}}{{Date}}服務器運行情況報告一、服務器:總告警次數:{{ServerTotal}} 服務器IP:{{IPA}},總共告警次數:{{ServerATotal}} 服務器IP:{{IPB}},總共告警次數:{{ServerBTotal}} 服務器IP:{{IPC}}&#x…

【22】Word:小李-高新技術企業政策?

目錄 題目? NO1.2 NO3 NO4 NO5.6 NO7.8 NO9.10 若文章中存在刪除空白行等要求,可以到最后來完成。注意最后一定要檢查此部分!注意:大多是和事例一樣即可,不用一摸一樣,但也不要差太多。 題目 NO1.2 F12Fn&a…

自動化部署(三):項目管理平臺

一、項目管理平臺作用 幫助團隊高效規劃、執行和監控項目進度,確保任務按時完成并實現目標 敏捷開發:提供標準敏捷研發管理,支持Scrum 與 Kanban 規模化敏捷:支持大型研發團隊跨項目協同,實現多項目路線圖規劃和資源管…

常用集合-數據結構-MySql

目錄 java核心: 常用集合與數據結構: 單例集合: 雙列集合: 線程安全的集合: ConcurrentHashMap集合: HashTable集合: CopyOnWriteArrayList集合: CopyOnWriteArraySet集合: ConcurrentLinkedQueue隊列: ConcurrentSkipListMap和ConcurrentSkipListSet&…

IP屬地與視頻定位位置不一致:現象解析與影響探討

在數字化時代,IP屬地和視頻定位位置已成為我們獲取網絡信息、判斷內容真實性的重要依據。然而,有時我們會發現,某些視頻內容中展示的定位位置與其發布者的IP屬地并不一致。這種不一致現象引發了廣泛的關注和討論。本文旨在深入剖析IP屬地與視…

計算機畢業設計hadoop+spark股票基金推薦系統 股票基金預測系統 股票基金可視化系統 股票基金數據分析 股票基金大數據 股票基金爬蟲

溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 溫馨提示:文末有 CSDN 平臺官方提供的學長聯系方式的名片! 作者簡介:Java領…

機器學習-數據集劃分

文章目錄 一. 為什么要劃分數據集二. 數據集劃分的方法1. 留出法:2. 交叉驗證:將數據集劃分為訓練集,驗證集,測試集3. 留一法:4. 自助法: 一. 為什么要劃分數據集 為了能夠評估模型的泛化能力,可…

根據當前用戶的活動、當地天氣和喜歡音樂類型,然后根據這些信息來播放相應的Spotify音樂 附python代碼

這段代碼是一個Python腳本,它使用了幾個外部庫來創建一個簡單的圖形用戶界面(GUI),讓用戶根據當前用戶的活動、當地天氣和喜歡音樂類型,然后根據這些信息來播放相應的音樂。 1. **導入庫**: - `openai`:用于與OpenAI API交互(盡管在這段代碼中沒有使用)。 - `sp…

excel導入數據處理前端

dialogErrorVisible false;dialogErrorTitle ;//錯誤標題public get gridErrorOptions(): GridOptions {return {headerHeight: 30, // 表頭高度rowHeight: 30, // 行高columnDefs: [//列定義{headerName: "序號",field: "SerialNumber",width: 40,pinne…

Vue 攔截監聽原理

Vue 漸進式JavaScript 框架 學習筆記 - Vue 攔截監聽原理 目錄 攔截監聽原理 如何跟蹤變化 攔截監聽示例 觀察者 注意:vue3的變化 總結 攔截監聽原理 如何跟蹤變化 當你把一個普通的Javascript 對象傳入 Vue 實例作為data選項,Vue 將遍歷此對象所有的proper…

全面評測 DOCA 開發環境下的 DPU:性能表現、機器學習與金融高頻交易下的計算能力分析

本文介紹了我在 DOCA 開發環境下對 DPU 進行測評和計算能力測試的一些真實體驗和記錄。在測評過程中,我主要關注了 DPU 在高并發數據傳輸和深度學習場景下的表現,以及基本的系統性能指標,包括 CPU 計算、內存帶寬、多線程/多進程能力和 I/O 性…

基于JAVA的校園二手商品交易平臺的設計與開發

摘 要:政府政策引導與社會觀念的轉變使得國內大學生的創業意識逐漸提高,很多高校大學生開始自主創業。目前我國各大高校暫且還沒有較為成型的針對校內學生創業者的校園網絡服務平臺。本文首先主要是介紹了關于java語言以及web開發的相關技術,…

HarmonyOS Next 應用UI生成工具介紹

背景 HarmonyOS Next適配開發過程中難買難要參考之前邏輯,但是可能時間較長文檔不全,只能參考Android或iOS代碼,有些邏輯較重的場景還可以通過AI工具將Android 的Java代碼邏輯轉成TS完成部分復用。對于一些UI場景只能手動去寫,雖…

總結6..

背包問題的解決過程 在解決問題之前,為描述方便,首先定義一些變量:Vi表示第 i 個物品的價值,Wi表示第 i 個物品的體積,定義V(i,j):當前背包容量 j,前 i 個物品最佳組合對應的價值,同…

代碼隨想錄day1

704.二分查找&#xff1a; 1.左閉右閉 int search(vector<int>& nums, int target) {int right nums.size() - 1;int left 0;while(left < right){int middle left ((right - left) >> 1);if(nums.at(middle) target){return middle;}else if(nums[m…

四級詞匯第六期

1.accomplish 完成 2.implication 暗示 3.complicated 復雜的 4.extent 范圍 5.sufficient 充足的 6.remarkable 引人注目的 7.insight 洞察 8.executive 管理的 9.overlook 俯瞰 忽略 10.urge 渴望 激勵 11.urgent 緊急的 12.accumulate 積累 13.appreciate 賞識 …

OpenHarmony OTA升級參考資料記錄

OpenHarmony 作為一個開源分布式操作系統,通過其強大的 OTA(Over-The-Air)升級能力,為開發者和廠商提供了一套靈活而安全的系統升級方案。 OTA升級方式 根據升級包的應用方式,OpenHarmony 的 OTA 升級可以分為兩種:本地升級和網絡OTA升級。 本地升級 本地升級是將已制作…

【數據結構篇】順序表 超詳細

目錄 一.順序表的定義 1.順序表的概念及結構 1.1線性表 2.順序表的分類 2.1靜態順序表 2.2動態順序表 二.動態順序表的實現 1.準備工作和注意事項 2.順序表的基本接口&#xff1a; 2.0 創建一個順序表 2.1 順序表的初始化 2.2 順序表的銷毀 2.3 順序表的打印 3.順序…

SDL2基本的繪制流程與步驟

SDL2(Simple DirectMedia Layer 2)是一個跨平臺的多媒體庫,它為游戲開發和圖形應用提供了一個簡單的接口,允許程序直接訪問音頻、鍵盤、鼠標、硬件加速的渲染等功能。在 SDL2 中,屏幕繪制的流程通常涉及到窗口的創建、渲染目標的設置、圖像的繪制、事件的處理等幾個步驟。…