Java跨模塊調(diào)用方式
Java常見的調(diào)用其他類或包的方法
- Spring IoC
- SPI
- Listener/Callback
- EventBus(類比Guava的事件總線)
Spring IoC
- 將所有類的實例的生成和管理都交由第三方,調(diào)用方從第三方拿到被調(diào)用方的實例,從而實現(xiàn)調(diào)用
SPI
- SPI即Service Provider Interface,調(diào)用方只有包含該方法的接口,需要調(diào)用方自己將獲取到的接口實現(xiàn)類實例注入到容器中,再從容器中取出調(diào)用
- 使用SPI的示例:JDK自帶的ServiceLoader.loader、Dubbo等
Listener/Callback
- Listener是一個集合,子模塊A將要使用的方法所在接口的實例放在這個集合中,子模塊B將這些接口的實現(xiàn)類塞進這個集合中,A要使用的時候就會看這個Listener集合具體哪些接口有實現(xiàn),再通過接口的方式去調(diào)用
- 使用Listener/Callback的示例:常見的各種GUI、事件處理
EventBus
- 調(diào)用方通過總線去調(diào)用被調(diào)用方,調(diào)用方與被調(diào)用方使用同一個總線對象,調(diào)用方向總線發(fā)送某類型的事件對象,此時被調(diào)用方在總線注冊自己的實例同時告訴總線自己訂閱的事件類型,通過相同事件類型實現(xiàn)了調(diào)用方與被調(diào)用方之間的調(diào)用關(guān)系
- 調(diào)用方與被調(diào)用方之間的數(shù)據(jù)傳輸,將需要傳輸?shù)臄?shù)據(jù)作為某類型的事件對象的成員屬性,在實現(xiàn)調(diào)用關(guān)系的同時,數(shù)據(jù)也得以傳輸
- 使用EventBus的示例:Guava的事件總線
Java兩個模塊之間調(diào)用service注入問題
遇到上述問題需要加入以下語句
@SpringBootApplication(scanBasePackages = {“com.heisenberg.weather.pro”,“com.heisenberg.authmgr”}) @MapperScan(basePackages = {“com.heisenberg.weather_pro.mapper”,“com.heisenberg.authmgr.dao”})
需要在調(diào)用別的模塊的主程序上加入scanBasePackages 范圍,要不然程序不知道你引用的是誰,并且要掃描創(chuàng)建的實體類的位置basePackages
否則出現(xiàn)以下情況:
No qualifying bean of type ‘com.zxq.api.dao.UserDao’ available: expected at least …
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java面試常問的Runnable和Callable的區(qū)別
大家好,本篇文章主要講的是java面試常問的Runnable和Callable的區(qū)別,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01MyBatis中${}?和?#{}?有什么區(qū)別小結(jié)
${}?和?#{}?都是?MyBatis?中用來替換參數(shù)的,它們都可以將用戶傳遞過來的參數(shù),替換到?MyBatis?最終生成的?SQL?中,但它們區(qū)別卻是很大的,今天通過本文介紹下MyBatis中${}?和?#{}?有什么區(qū)別,感興趣的朋友跟隨小編一起看看吧2022-11-11詳解Java實現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片
這篇文章主要介紹了Java實現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03MyBatis不同Mapper文件引用resultMap實例代碼
這篇文章主要介紹了mybatis 不同Mapper文件引用resultMap的實例代碼,非常不錯具有參考借鑒價值,需要的朋友可以參考下2017-07-07Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實例
下面小編就為大家?guī)硪黄狫ava用POI解析excel并獲取所有單元格數(shù)據(jù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10SpringBoot的Admin服務(wù)監(jiān)控詳解
這篇文章主要介紹了SpringBoot的Admin服務(wù)監(jiān)控詳解,Spring Boot Admin(SBA)是一個開源的社區(qū)項目,用于管理和監(jiān)控 Spring Boot 應(yīng)用程序,需要的朋友可以參考下2024-01-01解決IDEA中Maven依賴包導(dǎo)入失敗報紅問題(總結(jié)最有效8種解決方案)
這篇文章主要介紹了解決IDEA中Maven依賴包導(dǎo)入失敗報紅問題,本文通過圖文詳解給大家總結(jié)了最有效的8種解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07