Java動(dòng)態(tài)獲取實(shí)現(xiàn)某個(gè)接口下所有的實(shí)現(xiàn)類(lèi)對(duì)象集合
最近有個(gè)需求,我需要獲取所有同一類(lèi)型的定時(shí)任務(wù)的對(duì)象,并自動(dòng)執(zhí)行。
我想的方案是:直接獲取某個(gè)接口下面所有的實(shí)現(xiàn)類(lèi)的對(duì)象集合,方便以后只需要 實(shí)現(xiàn)這個(gè)接口,就能自動(dòng)被加載執(zhí)行。話不多說(shuō),說(shuō)說(shuō)我的實(shí)現(xiàn)方案。
開(kāi)始想著用反射自己寫(xiě)一個(gè)工具類(lèi),后面懶得去折騰,就直接用第三方工具包了,這里我用的是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包是因?yàn)閱为?dú)引入了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));
}
這里我用了Spring的ApplicationContext去獲取bean,這樣能獲取這些實(shí)現(xiàn)類(lèi)里面其他spring注入的bean。如果是簡(jiǎn)單方式的話,你們可以直接通過(guò)
monitor.getNewInstance來(lái)實(shí)現(xiàn)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Spring MVC利用Swagger2如何構(gòu)建動(dòng)態(tài)RESTful API詳解
這篇文章主要給大家介紹了關(guān)于在Spring MVC中利用Swagger2如何構(gòu)建動(dòng)態(tài)RESTful API的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
Java實(shí)現(xiàn)發(fā)送手機(jī)短信語(yǔ)音驗(yàn)證功能代碼實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)發(fā)送手機(jī)短信語(yǔ)音驗(yàn)證功能代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
理解Java中的靜態(tài)綁定和動(dòng)態(tài)綁定
這篇文章主要幫助大家理解Java中的靜態(tài)綁定和動(dòng)態(tài)綁定,在Java中存在兩種綁定方式,一種為靜態(tài)綁定,另一種就是動(dòng)態(tài)綁定,亦稱(chēng)為后期綁定,感興趣的小伙伴們可以參考一下2016-02-02
IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行
這篇文章主要介紹了IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行,需要的朋友可以參考下2021-01-01
Java中final,finally,finalize?有什么區(qū)別
這篇文章主要給大家分享的是?Java中final,finally,finalize?到底有什么區(qū)別,文章圍繞final,finally,finalize的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,具有一定的參考的價(jià)值,需要的朋友可以參考一下2021-11-11
Bean的自動(dòng)注入及循環(huán)依賴(lài)問(wèn)題
本文詳細(xì)介紹了Bean的自動(dòng)注入及循環(huán)依賴(lài),文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)有一定的研究?jī)r(jià)值,感興趣的小伙伴可以閱讀參考2023-03-03

