您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么使用RelProxy提高Java開發效率”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
RelProxy 旨在通過下列兩種方式提高開發效率:
可以在生產環境下修改用戶代碼,而不需要重新加載整個應用。
提高開發效率,避免花費過多的時間加載應用且對性能不會有影響。
兩個目標都要求在你的應用中增加一些 RelProxy 代碼,注冊成一種典型的監聽、回調模式。這是一種“侵入”的方式。
如果你是一名Java 框架或獨立 Java 通用服務模塊的開發者,可以將 RelProxy Java 嵌入到你的框架中,這樣能透明地為框架的終端用戶提供代碼自動加載功能,只需要進行一些必要的配置,而無需調用 RelProxy API。
對使用 Java 版的 RelProxy,有兩種 API 可供調用:
JProxy 及其相關類:主要是靜態方法
Java 腳本 API:基于接口
第二種方式更適合將 RelProxy 嵌入到你的 Java 框架中,這種方式是基于接口的,在你的 API 中無需暴露公共 RelProxy 類,因為在框架中會執行啟動程序。我將使用比較簡單的 API:JProxyScriptEngineFactory.create()。
JProxyScriptEngine 的功能與 Jproxy 相同,也就是說具有相同的方法。只是這種情況下,只需要使用接口。
一個簡單的例子是演示如何嵌入 RelProxy 的***方式。這個例子是 RelProxy 的示例倉庫中包含的 RelProxyBuiltin(relproxy_builtin_ex 項目中)。它定義了兩個監聽器來實現注冊用戶端的代碼,一個監聽器顯示選項(option),另一個執行選擇的行為。
這個迷你框架和示例使用 NetBeans 和 Maven 開發完成。
有兩個包:
com.innowhere.relproxy_builtin_ex :迷你框架。子包 com.innowhere.relproxy_builtin_ex.impl 只包含一個非公共的類。
com.innowhere.relproxy_builtin_ex_main :一個簡單的使用示例。
迷你框架(公共類和接口):
RelProxyBuiltinRoot.java
1 2 3 4 5 6 7 8 9 10 |
|
RelProxyBuiltin.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
OutputListener.java
1 2 3 4 5 6 |
|
CommandListener.java
1 2 3 4 5 6 |
|
現在看一下實現細節,該類演示了怎樣簡單地內嵌 RelProxy:
RelProxyBuiltinImpl.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
|
這三個方法足以解釋怎樣啟動 RelProxy Java 引擎,怎樣簡單地使用指令監聽器來注冊熱加載。
RelProxyBuiltinImpl.java (部分)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
公共方法 RelProxyBuiltin.getJProxyScriptEngine() 必須在啟動時執行,用于配置 RelProxy。如果沒有配置,RelProxy 就不起作用。
請記住,通過 create(…) 創建的代理對象需要能正確的執行 hashCode() 方法和 equals(Object) 方法,監聽器集合、監聽記錄依賴這兩個方法來區別監聽器對象。
這是基于控制臺的示例代碼(名稱與 JUnit 類似,但確實不是 JUnit 的測試示例):
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
|
看一下這段代碼:
Main.java (部分)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
我們獲取并注冊應用源代碼的根目錄,該代碼“可能”會被重新加載。
我們需要排除框架代碼,因為這顯然不是用戶的代碼(不需要重新加載)。此外,還需要排除 Main.java 文件,該文件包含了測試代碼,也不需要重新加載,只有 TestListener.java 類(與 Main.java 在同一文件夾下)需要(必需)重新加載。
*** TestListener.java 類包含兩個監聽器,CommandListener 的實現采用匿名內部類的方式,主要目的是為了演示。
TestListener.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
先預定義可選項,然后執行 Main 類。為了校驗 RelProxy 是否起作用,可以在不停止程序的運行的基礎上增加一個新的可選項“same”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
“怎么使用RelProxy提高Java開發效率”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。