Kotlin和SpringBoot開發的六邊形架構應用案例
TalkAdvisor是一個使用Kotlin和SpringBoot開發的六邊形體系結構演示應用程式。
TalkAdvisor由4個不同的模組組成:
1. 六邊形內部talkadvisor-domain
此模組儲存應用程式的所有業務價值,您可以在其中找到其DDD聚合Recommendation.。 已配置Maven以防止向領域中匯入任何外部工件:
<plugin> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <bannedDependencies> <excludes> <exclude>*</exclude> <!-- forbids non domain dependencies --> </excludes> <includes> <!-- but allow kotlin dependencies--> <include>org.jetbrains.kotlin:*</include> <include>org.jetbrains:annotations</include> <!-- and commons-lang3 because we don't want to make the wheel again --> <include>org.apache.commons:commons-lang3</include> <!-- and test dependencies--> <include>*:*:*:*:test</include> </includes> </bannedDependencies> </rules> </configuration> </execution> </executions> </plugin> |
如果向pom新增了任何依賴項,如果此列表中不允許,則構建將失敗。
2. 六邊形的外面talkadvisor-infra
所有介面卡都收集在talkadvisor-infra模組中。talkadvisor-infra是一個父pom,集中了所有介面卡的常見配置(Spring Boot BOM,...)。基礎設施分為3個模組:
(1)talkadvisor-infra-application
整個應用程式駐留在此模組中。您可以在此處找到控制器,YouTube客戶端(SPI介面卡),REST資源(API介面卡)和Spring Boot應用程式。
(2)talkadvisor-infra-external-stubs
儲存外部服務的存根,基本上是wiremock-based基礎設施,其中儲存了我們向YouTube發出的請求的一些響應有效負載。這些存根是在整合驗收測試期間啟動的,以便完全隔離TalkAdvisor的CICD構建。它們也可用於執行應用程式,請參閱執行應用程式。
(3)talkadvisor-infra-acceptance-tests
整合驗收和應用程式的端到端測試。它們在每個構建中針對具有外部存根的TalkAdvisor的本地例項啟動。端到端測試也可以針對插入真實呼叫的YouTube部署例項啟動,請參閱啟動端到端測試。
使用Cucumber(領域驅動測試)在領域驅動設計和六邊形體系結構中實現功能測試
使用領域驅動設計和六邊形體系結構,通常意味著應用行為驅動開發方法。
很多人都理解它,這種技術現在很普遍。不幸的是,我們經常看到用於描述應用程式行為的功能測試被實現為測試REST端點的http客戶端。
這種(反)模式的主要缺點是測試問題的混合。通過這種型別的測試,我們有責任驗證:
- 應用程式的業務邏輯(功能測試)
- 外部API的合同(合同測試)
- 提供給消費者的工作流程 - 或類似的東西(端到端測試)
- 領域物件和介面卡之間的對映(單元測試/整合測試)
- 應用程式的不同子元件的整合,例如控制器,領域服務,儲存庫...... (整合測試/元件測試)
- 大部分時間都不知道它:活動文件(合同測試)
相關文章
- 在 .NET Core 中應用六邊形架構架構
- 六邊形架構架構
- 六邊形架構教程:構建可維護的Web應用程式 - DEV架構Webdev
- Java和Spring的六邊形架構 - reflectoringJavaSpring架構
- 六邊形架構 Java 實現架構Java
- 六邊形架構入門 - levelup架構
- 六邊形之埠和介面卡架構 - cockburn架構
- 初識“六邊形”架構設計理論架構
- 為什麼需要六邊形架構?- silkandspinach架構
- 六邊形架構:管理複雜性的解決方案架構
- H5 六邊形消除遊戲開發H5遊戲開發
- 六邊形RecyclerViewView
- Android應用開發架構概述Android架構
- domain-driven-hexagon:領域驅動六邊形的Javascript案例AIGoJavaScript
- domain-driven-hexagon: 領域驅動六邊形架構學習資料AIGo架構
- 傳統應用系統架構向微服務應用架構升級的實戰案例微服務應用架構
- Android應用架構的發展和實踐Android應用架構
- 實戰指南 | Serverless 架構下的應用開發Server架構
- [WebGL入門]六,頂點和多邊形Web
- 六邊形架構:使用事件驅動的無伺服器實現鬆耦合 - Ellerby架構事件伺服器
- 六邊形架構:使用事件驅動的無伺服器實現松耦合 - Ellerby架構事件伺服器
- 用MDA和傳統方法開發一個三層架構應用的對比架構
- [轉]企業應用開發架構談(一)架構
- 企業應用開發架構談(一) (轉)架構
- 企業應用開發架構談(二) (轉)架構
- 企業應用開發架構談(三) (轉)架構
- 使用六邊形架構解耦技術程式碼與業務邏輯 - Julien Topçu架構解耦
- 使用Kotlin開發Android應用KotlinAndroid
- 2394 輸出六邊形
- 支付寶前端應用架構的發展和選擇前端應用架構
- .NET架構開發應知應會架構
- 【譯】開發大型 Angular 應用的12條架構清單Angular架構
- 應用架構指南全新發布應用架構
- 使用Kotlin優雅的開發Android應用KotlinAndroid
- 《SpringBoot實戰開發》——基於Gradle+Kotlin的企業級應用開發最佳實踐Spring BootGradleKotlin
- 統一PaaS架構支撐IT應用開發敏捷化架構敏捷
- 微信小程式-測試遊戲生成六邊多邊形微信小程式遊戲
- 使用Kotlin開發一個追番應用Kotlin