Java动态获取实现某个接口下所有的实现类对象集合

 更新时间:2018年12月08日 08:39:23   作者:执笔记忆的空白  
今天小编就为大家分享一篇关于Java动态获取实现某个接口下所有的实现类对象集合,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

最近有个需求,我需要获取所有同一类型的定时任务的对象,并自动执行。

我想的方案是:直接获取某个接口下面所有的实现类的对象集合,方便以后只需要 实现这个接口,就能自动被加载执行。话不多说,说说我的实现方案。

开始想着用反射自己写一个工具类,后面懒得去折腾,就直接用第三方工具包了,这里我用的是org.reflections

maven配置:

<dependency> 
<groupId>org.reflections</groupId> 
<artifactId>reflections-spring</artifactId> 
<version>${reflections.version}</version> 
<exclusions> 
<exclusion> 
<groupId>javassist</groupId> 
<artifactId>javassist</artifactId> 
</exclusion> 
</exclusions> 
</dependency> 

我这里去除javassist包是因为单独引入了javassist其他版本

另外就是代码引用了,以DelayedBaseMonitor接口为例:

List<DelayedBaseMonitor> monitorLists = new ArrayList<>(); 
Reflections reflections = new Reflections(delayedFindPackageName); 
Set<Class<? extends DelayedBaseMonitor>> monitorClasses = reflections.getSubTypesOf(DelayedBaseMonitor.class); 
for (Class<? extends DelayedBaseMonitor> monitor : monitorClasses) { 
  monitorLists.add(ApplicationContext.getBean(monitor)); 
} 

这里我用了SpringApplicationContext去获取bean,这样能获取这些实现类里面其他spring注入的bean。如果是简单方式的话,你们可以直接通过

monitor.getNewInstance来实现

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • SpringBoot 导出数据生成excel文件返回方式

    SpringBoot 导出数据生成excel文件返回方式

    这篇文章主要介绍了SpringBoot 导出数据生成excel文件返回方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • java进行文件读写操作详解

    java进行文件读写操作详解

    这篇文章主要介绍了java进行文件读写操作详解的相关资料,需要的朋友可以参考下
    2014-10-10
  • java 实现读取txt文本数据并以数组形式一行一行取值

    java 实现读取txt文本数据并以数组形式一行一行取值

    今天小编就为大家分享一篇java 实现读取txt文本数据并以数组形式一行一行取值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 详解Spring+Hiernate整合

    详解Spring+Hiernate整合

    这篇文章主要介绍了详解Spring+Hiernate整合,spring整合hibernate主要介绍以xml方式实现,有兴趣的可以了解一下。
    2017-04-04
  • Java中RSA加密解密的实现方法分析

    Java中RSA加密解密的实现方法分析

    这篇文章主要介绍了Java中RSA加密解密的实现方法,结合具体实例形式分析了java实现RSA加密解密算法的具体步骤与相关操作技巧,并附带了关于RSA算法密钥长度/密文长度/明文长度的参考说明,需要的朋友可以参考下
    2017-07-07
  • Java Benchmark 基准测试的实例详解

    Java Benchmark 基准测试的实例详解

    这篇文章主要介绍了Java Benchmark 基准测试的实例详解的相关资料,这里提供实例帮助大家学习理解这部分内容,需要的朋友可以参考下
    2017-08-08
  • Java中关于int和Integer的区别详解

    Java中关于int和Integer的区别详解

    本篇文章小编为大家介绍,在Java中 关于int和Integer的区别详解,需要的朋友参考下
    2013-04-04
  • spring-data-jpa实现增删改查以及分页操作方法

    spring-data-jpa实现增删改查以及分页操作方法

    下面小编就为大家分享一篇spring-data-jpa实现增删改查以及分页操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Java如何自定义异常打印非堆栈信息详解

    Java如何自定义异常打印非堆栈信息详解

    这篇文章主要给大家介绍了关于Java如何自定义异常打印非堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • java获取包下被指定注解的类过程解析

    java获取包下被指定注解的类过程解析

    这篇文章主要介绍了java获取包下被指定注解的类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论