인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

spring-boot-architecture

spring-boot-architecture

Structure Spring Boot 3+ projects with feature packaging and clean layering. Use when structuring Spring Boot 3 projects, defining layers, or applying architecture patterns.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: spring-boot-architecture description: Structure Spring Boot 3+ projects with feature packaging and clean layering. Use when structuring Spring Boot 3 projects, defining layers, or applying architecture patterns. metadata: triggers: files: - 'pom.xml' - 'build.gradle' keywords: - structure - layering - dto - controller - "@RestController" - "@Service" - "@Repository" - "@Entity" - "@Bean" - "@Configuration"

Spring Boot Architecture Standards

Priority: P0 (CRITICAL)

Organize by Feature

  • 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 @Entity directly.
  • Java Records: Use record for DTOs to ensure immutability (Java 17+).

See implementation examples for Java Record DTOs, controller patterns, and global exception handling.

Define Layer Responsibilities

  1. Controller (Web): Handle HTTP, Validation (@Valid), DTO mapping. Delegate logic to Service.
  2. Service (Business): Transaction boundaries, orchestration. Returns Domain/DTOs.
  3. Repository (Data): Database interactions only. Returns Entities/Projections.

Design API Layer

  • Global Error Handling: Use @RestControllerAdvice with ProblemDetails (RFC 7807).
  • Validation: Use Jakarta Bean Validation (@NotNull, @Size) on DTOs.
  • Response: Use ResponseEntity for explicit status or ResponseStatusException.

Verification Checklist (Mandatory)

  • No Entities in API: all API responses using DTOs/Records instead of JPA Entities?
  • Validation: @Valid and Jakarta Bean Validation constraints present on all input DTOs?
  • Layer coupling: Services depend on Controllers? (Prohibited)
  • Transactionality: business transactions correctly bounded with @Transactional in Service layer?
  • Error Details: ProblemDetails used for consistent error responses?

Anti-Patterns

  • No Fat Controllers: Move business logic to Services.
  • No Leaking Entities: Use DTOs instead of JPA Entities in APIs.
  • No Circular Dependencies: Use Events or refactor to decouple services.
  • No God Classes: Split large services into single-responsibility components.

References

저장한 Skills