Bài 6. Xử Lý Ngoại Lệ Trong Spring Boot
Tây Java - Lập Trình Java Từ A~Z
Website: tayjava.vn
Thông tin LH: quoctay87@gmail.com
⇒ Xem Source Code: tayjava.vn/xu-ly-ngoai-le-tro...
#tayjava, #javaspringboot, #springboot3, #springboottiengviet, #apibackend
Пікірлер: 36
Hay quá anh. Anh chuyên về backend java hay sao vậy a? Thấy mấy bài đúng mấy cái kiến thức hay
@tayjava
Ай бұрын
Đúng rồi em, A chuyên làm backend các hệ thống siêu to khổng lồ, bảo mật cao. Hy vọng nó hữu ích với em
Học xong playlist của sư phụ có thể đi xin việc rồi
@tayjava
Ай бұрын
Nắm vững lý thuyết vào ko toang đấy e
Chia sẻ nếu các bạn thấy thắc mắc về sao anh ý viết interface cho service. A ý đang tuân thủ về DI. ( Phụ thuộc đảo). 1. Nếu bạn viết 1 class UserService và inject vào controller, thì về sau bạn muốn đổi thằng userService này thì bạn sẽ phải vào controller để thay đổi => Đối với cách trên thì bạn chỉ cần impl lại các method mà interface nó nêu ra là xong. => Như thế dễ maintain. Ngoài ra còn ưu điểm gì nữa không thì mong a chia sẻ ạ.
@tayjava
Ай бұрын
Đảm bảo tuân thủ design pattern của spring boot, và đảm bảo tính inheritance và encapsulation của java e nhé
Dạ cho em hỏi là mình ném ra exception ở tầng service và handle ở tầng controller là chỉ là ví dụ a làm trong video này thôi hay đó là best pratices và nên áp dụng luôn ạ. Em cảm ơn ạ
@tayjava
Ай бұрын
Best practice nhé e!
@oucanh1792
Ай бұрын
@@tayjava Dạ em cảm ơn anh ạ
Theo mình khi đã tách method thì nên để tham số là class detail luôn để đỡ fai dùng instanceof, và vẫn cần log detail lỗi để dev backend biết chính xác lỗi ở line nào.
@tayjava
Ай бұрын
Ý bác là chỉ luôn cái DTO hay Controller nào lỗi đúng ko nhỉ ? E hiểu đúng ý bác chứ !
@nvtmjfan
Ай бұрын
@@tayjava ko ý tôi là handle...(MethodException e, ...) chứ ko phải Exception e, ở GlobalExceptionHandler ý
@tayjava
Ай бұрын
E hiểu ý bác rồi nhé !
Anh cho em xin hình ảnh sơ đồ của Exception đc k ạ! Em xin cảm ơn !
@tayjava
23 күн бұрын
Cho a email e ơi a gửi cho
Anh đang làm ở cty nào thế a ?
@tayjava
Ай бұрын
Cảm ơn e đã quan tâm! Haha..
@codekhongngu
22 күн бұрын
Công ty làm việc thì ai tiết lộ bao giờ bạn, hỏi câu tế nhị vậy
anh có thể cho em xin file tổng hợp các exception được không ạ
@tayjava
Ай бұрын
Để trong source code ấy e, phần mô tả video nhé
@thienpham3187
Ай бұрын
@@tayjava em tìm file vẽ lý thuyết á anh
@tayjava
Ай бұрын
Để lại email a gửi cho nha
Không có đoạn bắt lỗi ở phần enum anh nhỉ
@tayjava
Ай бұрын
Có chứ, e xem trong file GlobalExceptioHandler ấy
@naisi1387
Ай бұрын
@@tayjava case em cảm ơn anh, nhưng mà case 1,2 không có anh ạ, case 3 trả về string thì mới có. Với cho em hỏi anh cứ implement Serializable làm gì vậy em bỏ mà nó vẫn chạy bình thường
@tayjava
Ай бұрын
@@naisi1387 trong series này a có giải thích ở mấy bài rồi mà! DTO là Data Transfer Object, mỗi DTO là mô tả của 1 json data, json này truyền đi trên môi trường internet nên nó phải chuyển thành byte nhị phân mới truyền đi đc nên cần Serializable và convert từ byte thành json thì gọi là deserializable. Nôm na là thế! E đọc thêm trên mạng nhé, chát hơi mỏi tay e ạ
Mình từng thấy cách xử lý lấy message error hay hơn cắt chuỗi
@tayjava
Ай бұрын
Nếu được bác share cho e với để e thử, e cũng ko thấy cách ấy hay nhưng nó dẽ làm bác ợ
@nvtmjfan
Ай бұрын
@@tayjava bạn cho xin file ở postman được không để tôi test và viết lại cho
@nvtmjfan
Ай бұрын
@@tayjava if (e instanceof MethodArgumentNotValidException) { /* int start = message.lastIndexOf("[") + 1; int end = message.lastIndexOf("]") - 1; message = message.substring(start, end); */ var ret = ((MethodArgumentNotValidException) e).getBindingResult().getFieldError().getDefaultMessage(); errorResponse.setError("Invalid Payload"); errorResponse.setMessage(ret); // đây nhé thầy giáo
@tayjava
Ай бұрын
@@nvtmjfan Bác cho nhà em xin cái email nhé ! Với cả source code em để phần mô tả video nha bác, Bác cứ chạy docker là có database bác nha
@nvtmjfan
Ай бұрын
@@tayjava code đây nha: if (e instanceof MethodArgumentNotValidException) { /* int start = message.lastIndexOf("[") + 1; int end = message.lastIndexOf("]") - 1; message = message.substring(start, end); */ var ret = ((MethodArgumentNotValidException) e).getBindingResult().getFieldError().getDefaultMessage(); errorResponse.setError("Invalid Payload"); errorResponse.setMessage(ret);