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:
CourseAuthoringControllerV3nhận request.- Controller xác thực role/ownership bằng Spring Security.
- Use case trong
course_authoring/application/usecasexử lý nghiệp vụ. - Domain repository port được gọi.
- Adapter trong infrastructure map domain sang
*JpaEntity. - 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.