ClassUtil.java 1.4 KB
Newer Older
苗卫卫 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
package com.boco.nbd.wios.manage.util;

import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.core.type.filter.TypeFilter;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author:cao hai
 * @date:2022/6/17 11:02
 * @version:V1.0
 * @description:TODO ClassUtil
 * @modify:
 */
public class ClassUtil {

    /**
     * 通过packages获取class
     *
     * @param packages
     * @return
     */
    public static List<Class<?>> getClassFromPackage(String... packages) {
        final List<Class<?>> list = new ArrayList<>();
        for (String s : packages) {
            ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
            provider.addIncludeFilter((metadataReader, metadataReaderFactory) -> {

                String className = metadataReader.getClassMetadata().getClassName();
                try {
                    Class<?> clazz = Class.forName(className);
                    list.add(clazz);
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }

                return true;
            });
            provider.findCandidateComponents(s);
        }
        return list;
    }
}