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 中應用六邊形架構架構
- 六邊形架構架構
- Java和Spring的六邊形架構 - reflectoringJavaSpring架構
- 六邊形架構教程:構建可維護的Web應用程式 - DEV架構Webdev
- 六邊形架構 Java 實現架構Java
- 六邊形架構入門 - levelup架構
- 六邊形之埠和介面卡架構 - cockburn架構
- 為什麼需要六邊形架構?- silkandspinach架構
- 初識“六邊形”架構設計理論架構
- 六邊形架構:管理複雜性的解決方案架構
- H5 六邊形消除遊戲開發H5遊戲開發
- Android應用架構的發展和實踐Android應用架構
- domain-driven-hexagon:領域驅動六邊形的Javascript案例AIGoJavaScript
- domain-driven-hexagon: 領域驅動六邊形架構學習資料AIGo架構
- 傳統應用系統架構向微服務應用架構升級的實戰案例微服務應用架構
- 《SpringBoot實戰開發》——基於Gradle+Kotlin的企業級應用開發最佳實踐Spring BootGradleKotlin
- 實戰指南 | Serverless 架構下的應用開發Server架構
- 六邊形架構:使用事件驅動的無伺服器實現鬆耦合 - Ellerby架構事件伺服器
- 六邊形架構:使用事件驅動的無伺服器實現松耦合 - Ellerby架構事件伺服器
- 2394 輸出六邊形
- 奈飛Netflix如何在資料整合API領域使用六邊形架構與Clean架構切換到微服務架構? - Netflix TechBlogAPI架構微服務
- 運用Kotlin開發Android應用的一些技巧KotlinAndroid
- 使用六邊形架構解耦技術程式碼與業務邏輯 - Julien Topçu架構解耦
- Kotlin邊用邊學:Inline Functions的適用場景KotlininlineFunction
- 【譯】開發大型 Angular 應用的12條架構清單Angular架構
- 開發者架構選型:原生應用 or 混合框架?架構框架
- 應用架構指南全新發布應用架構
- .NET架構開發應知應會架構
- Kotlin + SpringBoot + JPA 服務端開發KotlinSpring Boot服務端
- 使用Kotlin開發一個追番應用Kotlin
- 12-factor應用和微服務架構應用的區別微服務架構
- 用Kotlin畫起仿掌上英雄聯盟和懂球帝的自定義多邊形戰力圖Kotlin
- 【恩墨學院】資料架構:中國電信的Oracle Sharding架構應用案例分析架構Oracle
- iOS應用千萬級架構開篇iOS架構
- Android架構系列-MVP架構的實際應用Android架構MVP
- 基於雲邊協同架構的五大應用場景革新架構
- 基於.NET架構的樹形動態報表設計與應用架構
- 人人都是 Serverless 架構師 | 彈幕應用開發實戰Server架構