stone2083

扫描classpath下类资源

很早之前,为了简化配置信息,自己写了一坨代码,基于classpath扫描类信息,加载.
其实,在spring中,已经提供了类似组件(后知后觉了...):

org.springframework.core.io.support.PathMatchingResourcePatternResolver  资源解析器(基于路径的正则表达式)
org.springframework.core.type.classreading.MetadataReader ClassMeta信息解读器

于是乎,代码就非常简单了:
 1 public class Test {
 2 
 3     /* 资源路径 */
 4     private static final String                  PATH           = "classpath*:com/alibaba/javalab/t*/**/*.class";
 5     /* 资源解析器 */
 6     private static final ResourcePatternResolver RESOLVER       = new PathMatchingResourcePatternResolver();
 7     /* Meta信息Reader Factory.用于创建MetaReader */
 8     private static final MetadataReaderFactory   READER_FACTORY = new SimpleMetadataReaderFactory();
 9 
10     public static void main(String[] args) throws Exception {
11         //根据正则表达式,得到资源列表
12         Resource[] resources = RESOLVER.getResources(PATH);
13         for (Resource res : resources) {
14             //通过 MetadataReader得到ClassMeta信息,打印类名
15             MetadataReader meta = READER_FACTORY.getMetadataReader(res);
16             System.out.println(meta.getClassMetadata().getClassName());
17         }
18     }
19 }

输出结果:
com.alibaba.javalab.tool.fetion.protocol.Config
com.alibaba.javalab.tool.fetion.protocol.Fetion
com.alibaba.javalab.tool.fetion.protocol.FetionHelper
com.alibaba.javalab.tool.fetion.protocol.LoginSession
com.alibaba.javalab.tool.trace.TimeTrace
...

挺好使的一个工具 :)


posted on 2010-07-23 14:55 stone2083 阅读(1184) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航: