spring 獲取指定包名下的類

在spring中使用註解特別爽,但如果要實現自定義註解,如何知道classpath下那些類使用了自定義的註解呢?方法就是先找到所的類型,然後用class的 isAnnotationPresent(annotationClazz)來判斷,最後加入自己的邏輯

public static void main(String[] args) throws Exception{
  System.out.println(getClasspath("c.c.k"));
}
public static List<Class<?>> getClasspath(String packagePath) throws Exception {
        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver);
        // 加載系統所有類資源
        Resource[] resources = resourcePatternResolver.getResources("classpath*:" + packagePath.replaceAll("[.]", "/") + "/**/*.class");
        List<Class<?>> list = new ArrayList<Class<?>>();
        // 把每一個class文件找出來
        for (Resource r : resources) {
            MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(r);
            Class<?> clazz = ClassUtils.forName(metadataReader.getClassMetadata().getClassName(), null);
            list.add(clazz);
        }
        return list;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章