layered-architecture

Featured

Use when generating or modifying any Spring Boot class — controllers, services, repositories, DTOs, mappers, or configuration. Enforces strict layer separation and prevents business logic from leaking across boundaries.

AI & Automation 225 stars 37 forks Updated 6 days ago MIT

Install

View on GitHub

Quality Score: 88/100

Stars 20%
78
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# Layered Architecture ## Layer Rules ``` @RestController ← HTTP only. No business logic. No JPA entities in responses. ↓ DTOs @Service ← All business logic lives here. Orchestrates repositories. ↓ Domain objects / Entities @Repository ← Data access only. No business logic. Returns entities or projections. ↓ JPA / JDBC Database ``` ## Controller Layer - Handles HTTP: parsing requests, validating input (`@Valid`), returning responses - Calls ONE service method per endpoint — no orchestration in controllers - Never returns `@Entity` classes directly — always map to response DTOs - Never injects `@Repository` — always goes through a `@Service` - Exception handling via `@ControllerAdvice`, never try/catch in controllers ```java // ✅ GOOD @PostMapping("/orders") public ResponseEntity<OrderResponse> createOrder(@Valid @RequestBody CreateOrderRequest request) { Order order = orderService.createOrder(request); return ResponseEntity.status(HttpStatus.CREATED).body(OrderResponse.from(order)); } // ❌ BAD — business logic in controller @PostMapping("/orders") public ResponseEntity<Order> createOrder(@RequestBody CreateOrderRequest request) { if (request.getItems().isEmpty()) throw new RuntimeException("No items"); Order order = orderRepository.save(new Order(request)); // direct repo access return ResponseEntity.ok(order); // returning entity } ``` ## Service Layer - Contains all business logic, validation rules,...

Details

Author
rrezartprebreza
Repository
rrezartprebreza/spring-boot-skills
Created
4 months ago
Last Updated
6 days ago
Language
Java
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category