Java 双亲委派问题&解决实战

Posted master-dragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 双亲委派问题&解决实战相关的知识,希望对你有一定的参考价值。

本文主要对上两篇文章进行总结,同时结合过去工作说一些感想

  1. Java 双亲委派问题&解决实战(一)
  2. Java 双亲委派问题&解决实战(二)

首先通过上两篇文章的讲解和代码实战,对JAVA类加载的双亲委派是有了进一步认识的;对所谓的类加载都应该有新的认识,而这些都是可以自由发挥的。

其次,在工作中的确是经常遇到依赖问题、版本升级问题;比如业务依赖了rpc中间件,数据库中间件, 而这两个都依赖fastjson,但是是不同版本;还有比如经常有fastjson安全漏洞,要全员业务升级,比较糟糕的做法就是每个业务组,每个项目都人工一个一个依赖升级(我上一家公司就是);…

经过上两篇文章和现公司的做法,思路即如下

  • 原来的情况
  • 假如中间加上一层
    业务与中间件依赖之间有专门的一层,那么依赖冲突就可以依靠中间层去做类加载,去做缓存等,来避免多个业务的重复问题

比如中间层缓存了 fastjson 1.0; fastjson 2.0; fastjson 3.0; 这三个版本类,那么业务层取之即用就好,如果业务要强制,那么中间层修改强制就行。


而在阿里就有这么个pandora, 魔盒一样帮你做好这一切,具体说来只需要如下三个步骤

  1. 业务方自己的类加载器加载Pandora
  2. Pandora加载起来,用Pandora自己内部组件、类加载器去把各种rpc,db插件给加载缓存起来
  3. 最后业务方直接找Pandora要相关依赖就好了

所以有点像依赖转移一样,但本质还是对双亲委派或者说类加载的一种完美应用

以上是关于Java 双亲委派问题&解决实战的主要内容,如果未能解决你的问题,请参考以下文章

Java 双亲委派问题&解决实战

java 双亲委派机制 & 与打破

[五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的

从源码理解双亲委派机制,原来如此简单

双亲委派模型

Java自定义类加载器与双亲委派模型