網站首頁 編程語言 正文
之前的項目一直是啟動類與Controller,Service,Mapper等包同級。Maven僅僅是引入其他模塊或者第三方Jar包工具。
但是最新接手一套項目的架構非常有趣,也是記錄一下分享一下,直接上示意圖:
如果按照傳統的模式,ABC每個子模塊都會有各自的啟動類。但是當前模式下:
上圖一共五個Maven項目,父模塊包含著四個子模塊,子模塊中有一個就是負責啟動ABC那個子模塊的啟動類,ABC三套子模塊中,又有各自的controller,service,mapper的包,然而僅需要ABC三個子模塊的controller的包名路徑一樣(??最好要保持一致,不然該案例的配置會掃描不到controller!!假設為com.jojo.zoo),那么啟動類指定掃描路徑就寫成:
@SpringBootApplication(scanBasePackages = {"com.jojo.zoo"})
然后還要在啟動類模塊的pom文件中,把ABC模塊都引入進來即可
如果不想啟動類模塊直接引入ABC,那就在父模塊中的引入ABC:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.jojo.zoo</groupId>
<artifactId>jojo-A</artifactId>
<version>${jojo.version}</version>
</dependency>
<dependency>
<groupId>com.jojo.zoo</groupId>
<artifactId>jojo-B</artifactId>
<version>${jojo.version}</version>
</dependency>
<dependency>
<groupId>com.jojo.zoo</groupId>
<artifactId>jojo-C</artifactId>
<version>${jojo.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
父模塊的module必須包含ABC和啟動類模塊
<modules>
<module>jojo-start</module>
<module>jojo-A</module>
<module>jojo-B</module>
<module>jojo-C</module>
</modules>
這樣更方便統一管理對應版本, 然后在XXX-Starter啟動類模塊的pom中加入:
<dependencies>
<dependency>
<groupId>com.jojo.zoo</groupId>
<artifactId>jojo-A</artifactId>
</dependency>
<dependency>
<groupId>com.jojo.zoo</groupId>
<artifactId>jojo-B</artifactId>
</dependency>
<dependency>
<groupId>com.jojo.zoo</groupId>
<artifactId>jojo-C</artifactId>
</dependency>
</dependencies>
這樣就能正常啟動,并且掃描到ABC三模塊下的所有Controller了
為什么要這樣拆分?
大佬說,部署的時候是用不到啟動類的,所以根本不需要打包那一塊代碼,拆分出來更加整潔干凈;同時也能更加靈活的組合對應模塊,模塊代碼分離度更高
最后,任何情況下都要記得刷maven,clean + install
原文鏈接:https://blog.csdn.net/whiteBearClimb/article/details/124756584
相關推薦
- 2023-10-17 el-table-column 表單table的后端返回時間戳的轉換
- 2023-10-26 在el-table中判斷三種情況,顯示不同的數據
- 2022-11-25 PostgreSQL自增主鍵用法及在mybatis中的使用教程_PostgreSQL
- 2023-04-12 Docker?login和logout的使用_docker
- 2022-10-20 react實現動態表單_React
- 2022-08-16 .Net使用Xunit工具進行單元測試_實用技巧
- 2022-10-19 R語言安裝以及手動安裝devtools的詳細圖文教程_R語言
- 2022-04-09 Python調用win10toast框架實現定時調起系統通知_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支