package com.util;
public static void main(String[] args) {
try{
// 多了一个getClassLoader,"/" 表示加载的分为,由于getClassLoader采用的是逐级向上委托的形式加载,
// '/'表示Boot ClassLoader类加载器中的加载范围,而这个类是采用C++实现,因此为null
URL resource0 = Utils.class.getClassLoader().getResource("/");
System.out.println(resource0);
// null
// 多了一个getClassLoader,表示当前类所在位置,不包括包的位置。
URL resource = Utils.class.getClassLoader().getResource("");
System.out.println(resource);
// file:/F:/ItemNew/server/target/classes/
// 多了一个getClassLoader, 加载指定包下的位置
URL resource4 = Utils.class.getClassLoader().getResource("com/config");
System.out.println(resource4);
// file:/F:/ItemNew/server/target/classes/com/config
// 多了一个getClassLoader, 加载指定包下的位置,注意,必须从calsses开始
URL resource5 = Utils.class.getClassLoader().getResource("config.properties");
System.out.println(resource5);
// file:/F:/ItemNew/server/target/classes/config.properties
// 表示当前类所在的位置,不包括包的位置,主要是因为一个resolveName函数,使得"/"斜杠作用小时了
URL resource1 = Utils.class.getResource("/");
System.out.println(resource1);
// file:/F:/ItemNew/server/target/classes/
// 表示当前类所在位置,包括包的位置。
URL resource2 = Utils.class.getResource("");
System.out.println(resource2);
// file:/F:/ItemNew/server/target/classes/com/util/
// 加载指定包下的位置
URL resource3 = Utils.class.getResource("/com/config");
System.out.println(resource3);
// file:/F:/ItemNew/server/target/classes/com/config
}catch (Exception e){
}
}
心得:在一个jvm需要唯一加载一个类,这个时候就用到了getResource。
然后Classs.forName("path");
反射即可得到类下的属性,然后执行相应的动作。