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)文章
HttpMessageConverter報文信息轉(zhuǎn)換器的深入講解
在Spring中內(nèi)置了大量的HttpMessageConverter,通過請求頭信息中的MIME類型,選擇相應(yīng)的HttpMessageConverter,這篇文章主要給大家介紹了關(guān)于HttpMessageConverter報文信息轉(zhuǎn)換器的相關(guān)資料,需要的朋友可以參考下2022-01-01
實例解決Java異常之OutOfMemoryError的問題
在本篇文章中,我們給大家分享了關(guān)于解決Java異常之OutOfMemoryError的問題的方法,有此需要的朋友們學(xué)習(xí)下。2019-02-02
IntelliJ IDEA 創(chuàng)建spring boot 的Hello World 項目(圖解)
這篇文章主要介紹了IntelliJ IDEA 創(chuàng)建spring boot 的Hello World 項目的步驟詳解,需要的朋友可以參考下2018-01-01
SpringBoot @Value注解支持配置自動刷新能力擴展方式
本文介紹了如何通過自定義注解和BeanPostProcessor實現(xiàn)SpringBoot中@Value注解的配置自動刷新能力,主要步驟包括:定義一個支持動態(tài)刷新的注解,實現(xiàn)配置的動態(tài)變更,以及通過BeanPostProcessor掃描并刷新使用@Value注解的變量2024-12-12
解決Maven項目idea找不到本地倉庫jar包問題以及使用mvn install:install-file
這篇文章主要介紹了解決Maven項目idea找不到本地倉庫jar包問題以及使用mvn install:install-file,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04

