Skip to content

sunwu51/ClassloaderDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

说明

使用classloader解决依赖冲突,视频地址https://www.bilibili.com/video/av68658611

运行前,需要将lib目录添加为依赖目录,添加方式
image

依赖说明

项目依赖于A.jar和B.jar。A依赖C的1.0版本,B依赖C的2.0版本。

双亲委派

用户程序中默认使用Appclassloader加载,只能加载一个C。所以AB必有一个不能正常使用,使用自定义classloader解决该问题,更多细节参见视频连接。

SPI

除了上面的打破双亲解决冲突,该仓库在spi包下还演示了java中spi的用法。

主要思想就是在resources/META-INF/services目录下,放置一个以全限定接口名命名的文件,在里面每行写实现该接口的类名。而后通过

ServiceLoader<SpiDemo> spiDemos = ServiceLoader.load(SpiDemo.class);

就可以获取实现了该接口的类的实例集合(用的是默认构造方法)。

SPI是动态加载类,使用的也是AppClassLoader。

About

java自定义类加载器解决依赖冲突的例子

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages