Backend Spring Boot

Backend dùng Java 21, Spring Boot 3.2, Spring Security, PostgreSQL, Flyway. Kiến trúc là Clean Architecture/DDD theo module nghiệp vụ.

Layer rule

domain <- application <- infrastructure
Layer Chứa gì Không nên chứa gì
domain model, repository port, value object, event Spring/JPA/HTTP
application use case, command/response DTO, application port controller, JPA entity
infrastructure REST controller, JPA entity, mapper, adapter business rule thuần domain

Một request điển hình

Ví dụ teacher cập nhật lesson:

  1. CourseAuthoringControllerV3 nhận request.
  2. Controller xác thực role/ownership bằng Spring Security.
  3. Use case trong course_authoring/application/usecase xử lý nghiệp vụ.
  4. Domain repository port được gọi.
  5. Adapter trong infrastructure map domain sang *JpaEntity.
  6. JPA repository ghi PostgreSQL.

File cần biết

Chủ đề File/thư mục
Security backend/src/main/java/com/example/lms/config/SecurityConfig.java
JWT filter backend/src/main/java/com/example/lms/config/JwtAuthenticationFilter.java
Course authoring backend/src/main/java/com/example/lms/course_authoring
Assessment backend/src/main/java/com/example/lms/assessment
Video/progress backend/src/main/java/com/example/lms/learning_delivery
Payment/upload/Wiii backend/src/main/java/com/example/lms/shared
Migration backend/src/main/resources/db/migration

Nếu gặp lỗi Not a managed type, thường là Spring Data repository đang trỏ nhầm domain model thay vì *JpaEntity.