//2 扫描出相关的类
private void doScanner(String scanPackage) {
//scanPackage=com.gupao.demo
//传入com.gupao.demo,获取文件路径
//file:/G:/java架构师3期/02.用300行代码手写提炼Spring的核心原理/课堂源码/gupaoedu-vip-spring-1.0/target/classes/com/gupaoedu/demo
URL url=this.getClass().getClassLoader().getResource("/"+scanPackage.replaceAll("\\.","/"));
//url.getFile() :G:/java架构师3期/02.用300行代码手写提炼Spring的核心原理/课堂源码/gupaoedu-vip-spring-1.0/target/classes/com/gupaoedu/demo
//通过路径名称转换为抽象路径名来创建新的File实例
//classPath:所有层级的路径名称都显示出来
File classPath = new File(url.getFile());
for(File file : classPath.listFiles()){
if(file.isDirectory()){
//file.getName:获取的是路径的最后一个“/”后的名称
doScanner(scanPackage + "." + file.getName());
}else{
if(!file.getName().endsWith(".class")){continue;}
//每个类的包名路径
String className=(scanPackage + "." +file.getName().replace(".class",""));
//放在list集合中
classNames.add(className);
}
}
}