包扫描工具
包扫描工具是我在Java程序开发中运用的比较多的一个工具,像博主在做服务发现项目时就需要用到包扫描来扫描注解以及其他项目,也是由于在使用过程中需要不断地重复这些操作,所以把包扫描做成了一个工具,这个虽然是个工具,但还需要用户实现其抽象方法,dealClass(Class<?> klass)来实现用户自己需要对类如何处理方法,这体现了这个工具的灵活性
源码
package com.wh.orm.core;
import java.io.File;
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
/**
* 包扫描类
* @author 闹闹小丫头
*
*/
public abstract class PackageScanner {
/**
* 对指定类进行处理
* @param klass 指定类
*/
public abstract void dealClass(Class<?> klass);
/**
* 处理指定包下的指定文件类
* @param rootPackage 指定包
* @param file 指定文件
*/
private void dealClassFile(String rootPackage, File file) {
String fileName = file.getName();
if (fileName.endsWith(".class")) {
fileName = fileName.