差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:guava:reflections:newproxy [2016/04/13 22:28] tony [How to?] |
java:guava:reflections:newproxy [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 4: | 行 4: | ||
傳統方法要針對某一個類別中的方法做特殊處理(前處理或後處理),通常我們會將其覆寫或透過Proxy Pattern方式;現今甚至可以透過AOP方式,去達到我們的目的。Guava提供簡便的Dynamic Proxy,讓我們可以針對某"介面"所宣告的method做處理。 | 傳統方法要針對某一個類別中的方法做特殊處理(前處理或後處理),通常我們會將其覆寫或透過Proxy Pattern方式;現今甚至可以透過AOP方式,去達到我們的目的。Guava提供簡便的Dynamic Proxy,讓我們可以針對某"介面"所宣告的method做處理。 | ||
===== How to? ===== | ===== How to? ===== | ||
+ | 我透過以下類別為範例做解說: | ||
<code java> | <code java> | ||
interface TestClassInterface { | interface TestClassInterface { | ||
行 21: | 行 22: | ||
} | } | ||
</code> | </code> | ||
- | + | 我想針對TestClass的test2方法做後製,將它的結果+1,以下為我的程式碼: | |
- | + | ||
<code java> | <code java> | ||
@Test | @Test | ||
行 43: | 行 42: | ||
} | } | ||
</code> | </code> | ||
+ | 從程式碼得知,要做後製的方法可以透過method.getName去處理;不需要的部分則按照原方法呼叫就可以了。\\ | ||
+ | \\ | ||
+ | Output: | ||
+ | <code> | ||
+ | execute: | ||
+ | proxy | ||
+ | test1 | ||
+ | test2 | ||
+ | </code> | ||
===== Resource ===== | ===== Resource ===== | ||
* [[http://n3integration.com/2015/09/23/instrument-java-classes/|Guava - Reflection.newProxy]] | * [[http://n3integration.com/2015/09/23/instrument-java-classes/|Guava - Reflection.newProxy]] |