Spring Boot Architecture Standards
Priority: P0
Implementation Guidelines
Structure & Packaging
- •Package by Feature: Prefer
com.app.feature(e.g.,user,order) over technical layers (controllers) for scalability. - •Dependency Rule: Outer layers (Web) depend on Inner (Service). Inner layers MUST NOT depend on Outer.
- •DTO Pattern: ALWAYS use DTOs for API inputs/outputs. NEVER return
@Entitydirectly. - •Java Records: Use
recordfor DTOs to ensure immutability (Java 17+).
Layer Responsibilities
- •Controller (Web): Handle HTTP, Validation (
@Valid), DTO mapping. Delegate logic to Service. - •Service (Business): Transaction boundaries, orchestration. Returns Domain/DTOs.
- •Repository (Data): Database interactions only. Returns Entities/Projections.
API Design
- •Global Error Handling: Use
@RestControllerAdvicewithProblemDetails(RFC 7807). - •Validation: Use Jakarta Bean Validation (
@NotNull,@Size) on DTOs. - •Response: Use
ResponseEntityfor explicit status orResponseStatusException.
Anti-Patterns
- •Fat Controllers: Business logic in Controllers.
- •Leaking Entities: Returning JPA Entities in APIs (LazyInitException risk).
- •Circular Dependencies: Services depending on each other (Use Events to decouple).
- •God Classes: Putting all logic in one
*Service.