SPRINGFORARCHITECTURALLYCURIOUSDEVELOPERSOliver Drotbohm [email protected]/ odrotbohm
View Slide
Coming in 2023…Follow @mawspring on
The Domain
OrdersInventoryOrderLine itemsStockInventory items
Unfortunately, Post-itsdon't run in production…
Unfortunately, Post-itsdon't run in production…… except you work at Miro.
Awesome! !Now… what? "
Let's get started…src/main/java….acme.myproject….acme.myproject.domain….acme.myproject.persistence….acme.myproject.service….acme.myproject.web
Let's get started…src/main/java….acme.myproject….acme.myproject.domain….acme.myproject.persistence….acme.myproject.service….acme.myproject.web#$
via https://devopedia.org/cohesion-vs-coupling
DomainBasedStructureDomainBasedBoundariesvia Dan North – CUPID—for joyful codingVideo cast episode @ Software Architektur im Stream (english)
src/main/java….acme.myproject….acme.myproject.customer….acme.myproject.inventory….acme.myproject.orderMuch better…%!
WebBusiness logicData access@RepositoryOrder Inventory …@Controller@ServiceVerification? Testing? Documentation? Observation?
Sample codehttps://github.com/odrotbohm/arch-evident-spring
Demo time! &!
Error ScenariosTransactionalEvent Listeners
@EventListener@EventListener…@TransactionalEventListener@TransactionalEventListener…@Transactional EventEventCommitConsistency boundarySpring beanLegend
Error scenarios
What if a transactionalevent listener fails?"
@EventListener@EventListener…@TransactionalEventListener@TransactionalEventListener…@Transactional EventEventCommitConsistency boundarySpring beanLegendPublicationlost!)'(
Event PublicationRegistry
@TransactionalEventListener@TransactionalEventListener…Event@TransactionalEventListener…@TransactionalEventListener…Transaction Commit
Spring ModulithA convention to map modules to packagesSimple set of access rules and API to verifyTest support to bootstrap modulesDocumentation supportObservability support
Thank you!Questions?Oliver Drotbohm [email protected]odrotbohmSample Code