Java项目中如何扩展第三方jar包中的类?

Posted tuhooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java项目中如何扩展第三方jar包中的类?相关的知识,希望对你有一定的参考价值。

有些时候你对第三方得到jar包中的类并不是很满意,想根据实际情况做一些扩展。如果说第三方的jar包已经提供了一些可扩展的类,比如提供了Interceptor,Filter或者其他的类,那么使用原生的比较保险一些。但是如果说并没有提供这些,那就要走一些不寻常的路。这里我总结了一些可行的方法,有的优雅,有的则是不得已而为之的。

 

一、继承你想要扩展的类,重写想要扩展的方法

这种做法是比较好的,符合面向对象的思想。另外动作比较小,风险也不会很大。但是这种方法有个前提是,被扩展的类在扩展点能用这个子类去替换。比如说在Bean配置的过程中,可以用在需要这个类的地方用子类注入,而不是注入被扩展的类。就是说原来想要扩展的类都是直接new出来的,那么我们新写的子类根本就没法在需要扩展的地方使用。

二、直接复制一份想要扩展的类,在项目中创建同包同名的类

这种方法是我在网上看到的,这里利用了类加载的优先性,说的是WEB-INF目录下的类加载的优先级要比lib中jar包类的优先级要高。

三、使用ASM等字节码修改工具,直接修改这个类的字节码

这个是终极做法了,直接把这个类的字节码修改成你想要扩展的样子。思路相当直接,缺点就是你要对字节码非常熟悉,并且熟悉ASM这个工具。其次这种做法的风险比较大,如果你提出了这种想法,很有可能被pass掉。

 

其实这几种就是AOP要做的,AOP我接触的比较少,配置起来稍显麻烦;另外有时候不一定会给你配置。

 

总结:

技术分享图片

以上是关于Java项目中如何扩展第三方jar包中的类?的主要内容,如果未能解决你的问题,请参考以下文章

27 Java动态加载第三方jar包中的类

android 导入第三方jar包,在程序中导入包中的类无效;

覆盖第三方jar包中的某一个类。妙!!

java中如何安装.jar包

java中如何安装.jar包?

加jar包啥时候需要添加类路径