java byte 拓展_Java项目中如何扩展第三方jar包中的类?
有些時候你對第三方得到j(luò)ar包中的類并不是很滿意,想根據(jù)實際情況做一些擴展。如果說第三方的jar包已經(jīng)提供了一些可擴展的類,比如提供了Interceptor,Filter或者其他的類,那么使用原生的比較保險一些。但是如果說并沒有提供這些,那就要走一些不尋常的路。這里我總結(jié)了一些可行的方法,有的優(yōu)雅,有的則是不得已而為之的。
一、繼承你想要擴展的類,重寫想要擴展的方法
這種做法是比較好的,符合面向?qū)ο蟮乃枷搿A硗鈩幼鞅容^小,風(fēng)險也不會很大。但是這種方法有個前提是,被擴展的類在擴展點能用這個子類去替換。比如說在Bean配置的過程中,可以用在需要這個類的地方用子類注入,而不是注入被擴展的類。就是說原來想要擴展的類都是直接new出來的,那么我們新寫的子類根本就沒法在需要擴展的地方使用。
二、直接復(fù)制一份想要擴展的類,在項目中創(chuàng)建同包同名的類
這種方法是我在網(wǎng)上看到的,這里利用了類加載的優(yōu)先性,說的是WEB-INF目錄下的類加載的優(yōu)先級要比lib中jar包類的優(yōu)先級要高。
三、使用ASM等字節(jié)碼修改工具,直接修改這個類的字節(jié)碼
這個是終極做法了,直接把這個類的字節(jié)碼修改成你想要擴展的樣子。思路相當(dāng)直接,缺點就是你要對字節(jié)碼非常熟悉,并且熟悉ASM這個工具。其次這種做法的風(fēng)險比較大,如果你提出了這種想法,很有可能被pass掉。
其實這幾種就是AOP要做的,AOP我接觸的比較少,配置起來稍顯麻煩;另外有時候不一定會給你配置。
總結(jié):
總結(jié)
以上是生活随笔為你收集整理的java byte 拓展_Java项目中如何扩展第三方jar包中的类?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 金字塔样式输出_Java打印金
- 下一篇: java美元兑换,(Java实现) 美元