Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Spring for the Architecturally Curious Developer
Search
Oliver Drotbohm
November 09, 2022
Programming
5
1.7k
Spring for the Architecturally Curious Developer
Oliver Drotbohm
November 09, 2022
Tweet
Share
More Decks by Oliver Drotbohm
See All by Oliver Drotbohm
It Takes Two to Tango – Designing Module Interactions in Modulithic Spring Applications
olivergierke
4
350
Bottom-Up Architecture – Bridging the Achitecture Code Gap
olivergierke
4
410
Spring Modulith – A Deep Dive
olivergierke
7
3.6k
Spring Boot 3 & Spring Framework 6
olivergierke
4
1.9k
Architecturally-evident Java Applications with jMolecules
olivergierke
8
2.6k
A Deep Dive into Spring Application Events
olivergierke
12
3k
Building Better Monoliths – Modulithic Applications with Spring Boot
olivergierke
4
860
Spring HATEOAS – Hypermedia APIs with Spring
olivergierke
1
620
Building Better Monoliths – Modulithic Applications with Spring Boot
olivergierke
6
4.1k
Other Decks in Programming
See All in Programming
What is Parser
yui_knk
9
4.1k
Rechartsで楽にゴリゴリにカスタマイズする!
10tera
1
160
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
140
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
140
LangChainでWebサイトの内容取得やGitHubソースコード取得
shukob
0
160
ブラウザ互換の重要性 - あらゆるユーザーに価値を届けるために必要なこと
yamanoku
0
110
令和トラベルにおけるLLM活用事例:社内ツール開発から得た学びと実践
ippo012
0
130
dRuby 入門者によるあなたの身近にあるdRuby 入門
makicamel
4
350
Go Code Generation at newmo / 2024-08-27 #newmo_layerx_go
genkey6
0
560
全部見せます! クラシルリワードのSwiftTesting移行プロジェクト
uetyo
0
200
Debugging: All you need to know (for simultaneous interpreting)
jmatsu
2
680
エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
bicstone
5
1.5k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
36
2k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Writing Fast Ruby
sferik
623
60k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
18k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
190
16k
Optimising Largest Contentful Paint
csswizardry
30
2.8k
The Language of Interfaces
destraynor
153
23k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
36
1.7k
Optimizing for Happiness
mojombo
375
69k
Agile that works and the tools we love
rasmusluckow
327
20k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.1k
Transcript
SPRING FOR ARCHITECTURALLY CURIOUS DEVELOPERS Oliver Drotbohm
[email protected]
/ odrotbohm
None
Coming in 2023… Follow @mawspring on
The Domain
Orders Inventory Order Line items Stock Inventory items
Unfortunately, Post-its don't run in production…
Unfortunately, Post-its don't run in production… … except you work
at Miro.
None
None
Awesome! ! Now… what? "
Let's get started… src/main/java ….acme.myproject ….acme.myproject.domain ….acme.myproject.persistence ….acme.myproject.service ….acme.myproject.web
None
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
Domain Based Structure Domain Based Boundaries via Dan North –
CUPID—for joyful coding Video cast episode @ Software Architektur im Stream (english)
src/main/java ….acme.myproject ….acme.myproject.customer ….acme.myproject.inventory ….acme.myproject.order Much better… %!
via https://devopedia.org/cohesion-vs-coupling
Web Business logic Data access @Repository Order Inventory … @Controller
@Service Verification? Testing? Documentation? Observation?
None
Sample code https://github.com/odrotbohm/arch-evident-spring
Demo time! &!
Error Scenarios Transactional Event Listeners
@EventListener @EventListener … @TransactionalEventListener @TransactionalEventListener … @Transactional Event Event Commit
Consistency boundary Spring bean Legend
Error scenarios
What if a transactional event listener fails? "
@EventListener @EventListener … @TransactionalEventListener @TransactionalEventListener … @Transactional Event Event Commit
Consistency boundary Spring bean Legend Publication lost! ) '(
Event Publication Registry
@TransactionalEventListener @TransactionalEventListener … Event @TransactionalEventListener … @TransactionalEventListener … Transaction Commit
Demo time! &!
Spring Modulith A convention to map modules to packages Simple
set of access rules and API to verify Test support to bootstrap modules Documentation support Observability support
Thank you! Questions? Oliver Drotbohm
[email protected]
odrotbohm Sample Code