Domain-Driven Design (Spring Boot 3)
Skill hướng dẫn Claude viết aggregate, value object và domain event đúng chuẩn DDD trong dự án Spring Boot 3.
Lập trìnhNâng cao★ 243⑂ 39Điểm AI 8/10Cập nhật lần cuối: 14 thg 8, 2026
Skill này làm gì
- Áp dụng quy tắc aggregate: mọi truy cập đi qua root, tham chiếu aggregate khác bằng ID, giữ aggregate nhỏ gọn.
- Tạo value object bất biến bằng Java
recordvới kiểm tra trong compact constructor (Money,EmailAddress). - Thu thập domain event trong aggregate và phát hành sau khi lưu, dùng
@TransactionalEventListener(AFTER_COMMIT); gợi ý cách dùng@DomainEventscủa Spring Data để tự động publish. - Dùng
Specificationđể ghép truy vấn phức tạp và Anti-Corruption Layer ở tầng infrastructure khi tích hợp API bên ngoài. - Danh sách "Gotchas" cảnh báo lỗi thường gặp: model anemic, dùng
Longlàm ID, đặt logic nghiệp vụ vào service.
Phù hợp với ai
- Lập trình viên Java làm backend Spring Boot 3 + JPA theo hướng DDD.
- Nhóm muốn refactor entity chỉ có getter/setter thành domain model giàu hành vi.
- Kiến trúc sư cần ngăn model của hệ thống ngoài/legacy rò rỉ vào domain.
Ví dụ sử dụng
- "Thêm chức năng thêm/xóa item cho đơn hàng" → sinh method
order.addItem(...)trên root thay vì thao tác trực tiếp vào collection con. - "Gửi email khi đơn hàng được đặt" → tạo event
OrderPlaced, publish sau commit và xử lý bất đồng bộ. - "Cần API tìm kiếm theo trạng thái, khách hàng và khoảng thời gian" → gợi ý
OrderSpecificationsghép điều kiện kèmPageable.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/rrezartprebreza/spring-boot-skills/HEAD/skills/spring-boot-3/domain-driven-design/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục skills/spring-boot-3/domain-driven-design từ repo GitHub rrezartprebreza/spring-boot-skills vào ~/.claude/skills/domain-driven-design/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/rrezartprebreza/spring-boot-skills.git && mkdir -p ~/.claude/skills && cp -r spring-boot-skills/skills/spring-boot-3/domain-driven-design ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở terminal.
- Clone repo:
git clone https://github.com/rrezartprebreza/spring-boot-skills.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Copy skill:
cp -r spring-boot-skills/skills/spring-boot-3/domain-driven-design ~/.claude/skills/ - (Tùy chọn) Copy thêm skill
transactional-patternsđược tham chiếu trong tài liệu để hiểu đầy đủ phần event theo transaction. - Khởi động lại Claude Code và thử yêu cầu "thiết kế aggregate cho đơn hàng" để kiểm tra skill được nạp.
Xem mã nguồn trên GitHub ↗Giấy phép: MIT