关于Spring Boot中的getResources
在前一篇讲Spring Boot启动流程的文章中,在获取Initializers和Listeners的时候都会通过ClassLoader的getResources方法获取相关文件的全限定名。
今天着重分析一下ClassLoader.getResources,ClsasLoader.getResource,Class.getResource
1.Class.getResource
看下面一段代码
System.out.println(TestResources.class.getResource("Test.xml"));
System.out.println(TestResources.class.getResource("/Test.xml"));
返回结果:
null
file:/Users/xujingzhou/IdeaProjects/test-resources/target/classes/Test.xml
我们先看现象,同样都是调用调用class.getResource方法,为什么会有不同的结果呢。
首先看一下class.getResource()
public java.net.URL getResource(String name) {
name = resolveName(name);
//获取当前的类加载器
ClassLoader cl = getClassLoader0();
if (cl==null) <