ClassPathScanningCandidateComponentProvider扫描class文件
ClassPathScanningCandidateComponentProvider
是Spring
提供的工具,可以按自定义的类型,查找classpath
下符合要求的class文件。
public static void main(String[] args) throws ClassNotFoundException {// true:默认TypeFilter生效,这种模式会查询出许多不符合你要求的class名// false:关闭默认TypeFilterClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);// 扫描带有自定义注解的类provider.addIncludeFilter(new AnnotationTypeFilter(ScanAnnotation.class));// 接口不会被扫描,其子类会被扫描出来provider.addIncludeFilter(new AssignableTypeFilter(ScanClassInterface.class));// Spring会将 .换成/ ("."-based package path to a "/"-based)// Spring拼接的扫描地址:classpath*:xxx/xxx/xxx/**/*.class// Set<BeanDefinition> scanList = provider.findCandidateComponents("com.p7.demo.scanclass");Set<BeanDefinition> scanList = provider.findCandidateComponents("*");for (BeanDefinition beanDefinition : scanList) {System.out.println(beanDefinition.getBeanClassName());}}
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ScanAnnotation {}public interface ScanClassInterface {}public class AClass implements ScanClassInterface {}@ScanAnnotation
public class CClass {}
案例
多个系统都使用到org.quartz
定时任务,为了解决业务问题,每个系统中的需要的业务参数肯定不同,并且要提供随时可以添加定时任务的功能。在一些公司,针对多个系统,都会开发一套运维管理平台,管理系统中的数据,或协调系统资源,或协助实施人员临时解决线上问题等,运维管理平台可以仅供公司内部人员使用,或者提供给受过培训的人员使用。
那么针对这个定时任务的需求,也可以将功能添加到运维管理平台上,并且针对业务类型的不同或者业务复杂程度的不同,Job
类型的多样性要求我们封装自己的Job
实体。此时问题就来了,使用运维管理平台创建定时任务时,首先我们知道应该在哪个系统上创建,第二应该创建哪个类型的Job
。
针对第二个问题的实现,我们可以预定义一些key/value
进行转换,例如前端传递的“通用任务”字符串对应com.xxx.xxx.CommonJob
类,这种要额外维护key/value
;或者是直接暴露要操作的系统中所有的类全限定名的列表,由前端传入任务类的全限定名,在后端进行处理,这种就可以使用ClassPathScanningCandidateComponentProvider
去扫描类的权限定名。(一般情况下,运维管理平台是公司内部使用,不用担心安全性问题)
Class<? extends Job> jobClazz = (Class<? extends Job>) Class.forName(StringUtils.trim(clazzStr));
// 创建任务明细
JobDetail jobDetail = JobBuilder.newJob(jobClazz )// 任务执行类.withIdentity(jobName, jobGroupName).setJobData(jobDataMap).withDescription(description)// 任务名,任务组.build();
ClassPathScanningCandidateComponentProvider扫描class文件相关推荐
- 请先设置tkk_理光MP2014扫描至文件夹的设置方法
理光旗下的2014系列入门级A3黑白复印机市场保有量较大,该系列机型加装M16网卡后可以方便的实现扫描至文件夹功能,经常有客户咨询该机型的扫描设置方法,下面我就以MP2014D为例来演示一下该机型的S ...
- Android之Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:扫描指定文件
1.启动MediaScanner服务,扫描媒体文件: 程序通过发送下面的Intent启动MediaScanner服务扫描指定的文件或目录: Intent.ACTION_MEDIA_SCANNER_SC ...
- 如何用计算机扫描图片变成文字,如何把文字图片或者扫描的文件变成word文档?详细步骤...
我们在日常工作,有时候会遇到需要把文字图片或者扫描的文件变成word文档,最笨的方法就是一个一个字的打到word文档,有一些图片的文字是可以在搜索引擎上找到的,但是首先这个需要运气好.不过,现在小编就 ...
- 如何将扫描PDF文件转换成word,两个超简单的方法一看就会
在工作中我们都会经常接触到PDF文件,但是这些都是比较常见的,有时候会因为工作的需要要接触扫描格式的文件,比较难的是需要将扫描PDF文件转换成Word,很多人就很头疼,不知道该从哪里开始下手去做,虽然 ...
- Duplicate File Detective(电脑重复文件清理软件)官方正式版V7.0.78.0 | 电脑怎么扫描重复文件
Duplicate File Detective 是一款优秀的业务级电脑重复文件清理软件,也叫重复文件侦探,内置不断优化改进的智能多线程分析引擎和文件哈希计算器来计算任何文件的哈希值,能一次查找多个本 ...
- 【其他】小红伞Avira,扫描压缩文件
1. 命令行执行小红伞Avira扫描指定文件 命令和参数如下 "小红伞扫描软件路径" /CFG="小红伞扫描辅助scan.avp路径" /PATH=" ...
- 如何使用ABBYY软件扫描纸质文件并制作电子文件
把纸质文件扫描为PDF文件是保存备份文档的一种方法,也是将纸质书籍制作成电子书的第一步.文字识别软件ABBYY FineReader PDF 15软件中,自带有扫描工具,功能非常强大. ABBYY软件 ...
- 理光复印机怎么扫描到文件夹服务器里,理光复印机扫描到文件夹设置方法.docx...
理光复印机扫描到文件夹 的设置方法 -----------------注:此处以在桌面创建共享文件夹为示范-------------- 先在桌面创建一个文件夹,命名为"扫描文件" ...
- 电脑扫描的文件怎么转换成word文档并修改
我们在日常的工作和学习中会经常使用word文档,因为word文档不论在阅读,修改方面都是非常的方便,那如何将文件转换成word文档呢?接下来就和小编一起来看看电脑扫描的文件怎么转换成word文档,文件 ...
最新文章
- static关键字了解解析
- jni头文件自动生成
- Elasticsearch集群部署的相关问题记录
- 跨域 || Jsonp
- Server Error in '/' Application. 报错
- Linux网络编程 | 多路复用I/O :select、poll、epoll、水平触发与边缘触发、惊群问题
- 在visualc++可以运行的程序在linux下怎么不能,Linux环境下C++只允许单个程序运行...
- Windows 7关闭和开启系统休眠
- OV7725摄像头软件实现简单的二值化处理
- NOTEPAD++正则法则:第一个和最后一个
- 计算机安全模式什么意思,什么是电脑安全模式 电脑怎么解除安全模式
- 【原创】关于2013、2014款Macbook Air安装Windows的那点事
- NoteExpress使用中的一些问题
- DecimalFormat的几种用法!
- python散点图获取边界_将曲线拟合到散点图的边界
- 弹道分析软件_火控系统弹道解算软件的测试方法
- 使用领英助理解决领英搜索限制继续精准搜索人脉(客户)的方法
- 收银台模块php课程设计,【基于PHP+MySQL的美发店收银系统的设计与实现最终版材料】...
- java初学者的装备(软件、学习路线、资源)
- 人脸识别最新数据库(表情)汇总