# scanner **Repository Path**: codealy/scanner ## Basic Information - **Project Name**: scanner - **Description**: jdk 1.8下的扫描工具 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-04 - **Last Updated**: 2021-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # scanner ### 介绍 scanner 为一个脱离 spring 环境的包路径(package)下的类扫描工具。 用于获取指定包下的Class类,同时可根据指定Annotation或父类接口进行过滤。 ### 使用说明 项目已上传Maven中央仓库。 > https://search.maven.org/search?q=whosly >https://mvnrepository.com/search?q=whosly #### 1.注意事项 - 项目JDK 版本 1.8+ - 基线 yueny-parent 1.3.0。 请提前部署。 > https://github.com/yueny/base/blob/master/yueny/pom.xml - 组件依赖明细 ```xml org.apache.commons commons-lang3 org.apache.commons commons-collections4 org.projectlombok lombok com.google.guava guava ``` #### 2.依赖 - 添加依赖 在项目添加以下依赖包: ``` com.whosly scanner8 version ``` #### 3. 使用手册 - 示例代码 ```java package com.whosly.scanner.util; import com.google.common.collect.Sets; import com.whosly.scanner.Scanner; import com.whosly.scanner.api.IScanner; import com.whosly.scanner.config.ScanConfig; import com.whosly.scanner.util.st.ISt; import com.whosly.scanner.util.st.anno.St; import lombok.extern.slf4j.Slf4j; import org.junit.Assert; import org.junit.Test; import java.util.Arrays; import java.util.List; /** * @Author yueny09 * @Date 2019-09-04 21:18 */ @Slf4j public class ScannerTest { private final List scanPkgs = Arrays.asList( "org", "lombok", "com.sun", "javax", "com.whosly"); private IScanner scanner = new Scanner(); /** * 测试用例:扫描多个包 */ @Test public void testScan() { List> classList = scanner.scan(scanPkgs); Assert.assertTrue(classList.size() > 0); log.info("共扫描到{}个类", classList.size()); } /** * */ @Test public void testScanByAnnotation() { List> classList = scanner.scan(scanPkgs, Deprecated.class); Assert.assertTrue(classList.size() > 0); log.info("共扫描到{}个类", classList.size()); classList = scanner.scan(scanPkgs, St.class); Assert.assertTrue(classList.size() == 3); log.info("共扫描到{}个类", classList.size()); ScanConfig scanConfig = ScanConfig.builder() .basePackages(scanPkgs) .annotation(St.class) .build(); log.info("扫描配置: {}.", scanConfig); } /** */ @Test public void testScanByClass() { List> classList = scanner.scan(Sets.newHashSet(Arrays.asList( "com.aaa", "com.whosly")), ISt.class); Assert.assertTrue(classList.size() == 7); log.info("共扫描到{}个类:{}.", classList.size(), classList); classList = scanner.scan(Sets.newHashSet(Arrays.asList( "com.aaa", "com.whosly")), ISt.class, Arrays.asList(ScanConfig.ClazzType.INTERFACE, ScanConfig.ClazzType.CLASS, ScanConfig.ClazzType.ABSTRACT)); Assert.assertTrue(classList.size() == 8); log.info("共扫描到{}个类:{}.", classList.size(), classList); classList = scanner.scan(Sets.newHashSet(Arrays.asList( "com.aaa", "com.whosly")), ISt.class, Arrays.asList(ScanConfig.ClazzType.INTERFACE, ScanConfig.ClazzType.CLASS)); Assert.assertTrue(classList.size() == 7); log.info("共扫描到{}个类:{}.", classList.size(), classList); classList = scanner.scan(Sets.newHashSet(Arrays.asList( "com.aaa", "com.whosly")), ISt.class, Arrays.asList(ScanConfig.ClazzType.INTERFACE)); Assert.assertTrue(classList.size() == 2); log.info("共扫描到{}个类:{}.", classList.size(), classList); classList = scanner.scan(Sets.newHashSet(Arrays.asList( "com.aaa", "com.whosly")), ISt.class, Arrays.asList(ScanConfig.ClazzType.CLASS)); Assert.assertTrue(classList.size() == 5); log.info("共扫描到{}个类:{}.", classList.size(), classList); classList = scanner.scan(Sets.newHashSet(Arrays.asList( "com.aaa", "com.whosly")), ISt.class, Arrays.asList(ScanConfig.ClazzType.ABSTRACT)); Assert.assertTrue(classList.size() == 1); log.info("共扫描到{}个类:{}.", classList.size(), classList); } } ``` ### 联系方式 - Email:deep_blue_yang@126.com