很早之前,為了簡化配置信息,自己寫了一坨代碼,基于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
...
挺好使的一個工具 :)