Chuyên mục
Backend
APIs, databases and distributed systems.

Ngày 14 của 99 Ngày Spring: Bean Validation khai báo luật ngay trên DTO — @Valid kích hoạt, bộ constraint chuẩn (@NotBlank vs @NotEmpty vs @NotNull, @Size, @Email, @Min/@Max), bẫy int vs Integer, validate object lồng nhau không tự lan, và lỗi 400 gom một lượt.

Ngày 14 của 99 Ngày Java: extends trao gia tài từ lớp cha, override với @Override và super., thứ tự khai sinh cha trước con sau qua super(...), protected trả nợ Ngày 13, và phép thử is-a vs has-a — khi nào nên composition thay vì kế thừa.

Ngày 13 của 99 Ngày Spring: @RequestBody + Jackson deserialize JSON thành object, DTO là hợp đồng API — chặn lỗ hổng mass assignment chiều vào và rò rỉ dữ liệu chiều ra, request/response DTO khác nhau là bình thường, và Jackson annotations tinh chỉnh hợp đồng JSON.

Ngày 13 của 99 Ngày Java: vì sao public field là thảm họa, công thức private + getter + nghiệp vụ có kiểm soát (không setter bừa bãi), bốn mức access modifier với chiến lược kín nhất có thể, và quy ước JavaBean bắt tay framework.

Ngày 12 của 99 Ngày Spring: @PathVariable hứng định danh trong đường dẫn, @RequestParam hứng bộ lọc sau dấu hỏi (required/defaultValue), quy tắc chọn path hay query, mapping trùng nổ lúc khởi động, và chuẩn thiết kế URL danh từ số nhiều.

Ngày 12 của 99 Ngày Java: constructor ép đối tượng chào đời đầy đủ dữ liệu, default constructor — món quà có điều kiện của compiler, overload constructor nối nhau bằng this(...), khối khởi tạo instance/static và thứ tự thực thi khi new.

Ngày 11 của 99 Ngày Spring — mở màn giai đoạn REST API: @RestController + @GetMapping mở endpoint trong 5 dòng, Jackson tự serialize object thành JSON, hành trình request qua DispatcherServlet, và thói quen vàng controller mỏng — service dày.

Ngày 11 của 99 Ngày Java — mở màn OOP: class là khuôn, object là bánh; field & method của đối tượng; new đúc đối tượng trên heap và biến chỉ giữ tham chiếu; giá trị mặc định của field; và this — con trỏ "chính tôi" trong method.
