方案一: 采用reflections 框架(此框架依赖com.google.guava)
2、项目依赖
org.reflections
reflections
0.9.11
com.google.guavaguava
21.0
3、实现代码
//入参 要扫描的包名
Reflections f = new Reflections("com.ggband.netty.execute.command");
//入参 目标注解类
Set> set = f.getTypesAnnotatedWith(Cmd.class);
方案二: 采用ClassLoader扫描
1、实现代码
packagecom.ggband.netty;importjava.io.File;importjava.io.IOException;importjava.lang.annotation.Annotation;importjava.net.JarURLConnection;importjava.net.URL;importjava.net.URLDecoder;importjava.util.Enumeration;importjava.util.HashSet;importjava.util.Set;importjava.util.jar.JarEntry;importjava.util.jar.JarFile;public classScanner {/*** 从包package中获取所有的Class
*
*@parampackageName
*@return
*/
public Set> getClasses(String packageName) throwsException {//第一个clas