平时,我们用maven来管理项目的依赖包,可是有时候还是会出现jar包多版本同时存在的问题,这时,我们可以利用classloader的隔离机制来解决。
1.我们自定义classloader,然后设置它为应用的contextClassLoader运行。
2.自定义classLoader加载特定目录的jar包,同时把加载过的Class缓存起来,这时classLoader就起到隔离作用,像一个容器,只装自己的jar包。
3.Class的查找机制,如果自定义classLoader里加载过,取出来直接返回,没有则用父classLoader查找加载。
4.自定义classLoader加载自己指定目录的jar包,父classLoader则加载classpath里的包或者类。
可能说的比较简洁,大家感兴趣还是直接看代码吧。
练习代码看这里