You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
17 (toolchain target);Java 25 planned — see backlog
Maven
wrapper ./mvnw included
Docker
for full stack
2. Commands
./mvnw clean compile # build
./mvnw test# tests (needs RabbitMQ reachable — see 06-testing.md)
./mvnw spring-boot:run # run against H2 + local broker
./mvnw package -DskipTests # jar → target/email-0.0.1-SNAPSHOT.jar
docker compose up --build # full stack
docker compose up email_ms # just this service + deps
3. Package conventions
Package
Rule
domain/*
no framework I/O annotations beyond jakarta.persistence; ports as interfaces
application/usecase/**
one class = one action, execute(...)
application/policy/**
cross-cutting semantics (status, retry)
infra/**
@Configuration beans
4. Code style notes (current reality → target)
Current
Target
field @Autowired
constructor injection
e.printStackTrace()
log.error("...", e) via SLF4J
stray imports (e.g. javax.swing.text.html.Option)
removed
Optional-orchestrated flow
keep, but persist ERROR audit
5. Adding a feature — checklist
Use case in application/usecase/** with the narrowest port dependency.
Wire in EmailServiceImpl (or new domain service) — keep @Transactional boundary explicit.
Message contract change? update 03 Messaging + producer in ems_user.
Schema change? add Flyway migration (post-backlog) — never rely on ddl-auto.