Annotation @Async do framework Spring cung cấp. Class hoặc method được đánh dấu bằng annotation này sẽ được thực thi trong thread bất đồng bộ. Điều đó có nghĩa là khi method được gọi, caller sẽ không chờ method thực thi xong mà có thể tiếp tục thực thi code phía sau.
Spring là một trong những infrastructure cốt lõi nhất của Java backend. Học Spring không nên chỉ học thuộc annotation, mà còn phải hiểu IoC, AOP, Bean lifecycle, transaction, auto-configuration, design pattern và các extension point thường gặp.
Spring Boot tiếp tục tích hợp configuration, dependency management, auto-configuration và năng lực observability trong production, giúp phát triển application nhanh hơn nhưng cũng dễ khiến người học bỏ qua nguyên lý bên trong.
Annotation @Async do framework Spring cung cấp. Class hoặc method được đánh dấu bằng annotation này sẽ thực thi trong thread bất đồng bộ. Điều đó có nghĩa là khi method được gọi, caller sẽ không chờ method thực thi xong mà có thể tiếp tục thực thi code phía sau.
Bài viết này sẽ giải thích IoC & AOP dựa trên các câu hỏi sau:
- IoC là gì?
- IoC giải quyết vấn đề gì?
- IoC và DI khác nhau thế nào?
- AOP là gì?
- AOP giải quyết vấn đề gì?
- AOP có những trường hợp sử dụng nào?
- Vì sao AOP được gọi là lập trình hướng aspect?
- Có những cách nào để triển khai AOP?
Không hề quá lời khi nói rằng các annotation Spring/Spring Boot thường dùng được giới thiệu trong bài viết này đã bao quát phần lớn các trường hợp thường gặp trong công việc. Với mỗi annotation, bài viết đều cung cấp cách sử dụng cụ thể. Nắm vững những nội dung này thì về cơ bản bạn sẽ không gặp vấn đề lớn khi dùng Spring Boot để phát triển dự án!
“JDK sử dụng những design pattern nào? Spring sử dụng những design pattern nào?” là hai câu hỏi khá thường gặp trong phỏng vấn.
Tôi đã tìm kiếm trên Internet một thời gian và nhận thấy các bài giải thích về design pattern trong Spring gần như đều giống nhau, hơn nữa phần lớn đã khá cũ. Vì vậy, tôi đã dành vài ngày để tự tổng hợp lại.
Bài viết này chủ yếu muốn giúp bạn hiểu sâu hơn về Spring thông qua một số câu hỏi, vì vậy sẽ không đề cập quá nhiều đến code!
Nhiều câu hỏi dưới đây tôi cũng không chú ý trong quá trình sử dụng Spring, mà phải tạm thời tra cứu nhiều tài liệu và sách để bổ sung. Trên Internet cũng có nhiều bài tổng hợp câu hỏi thường gặp/câu hỏi phỏng vấn Spring, nhưng tôi thấy phần lớn sao chép lẫn nhau, nhiều câu hỏi cũng chưa tốt và một số câu trả lời còn có vấn đề. Vì vậy, tôi đã dành một tuần ngoài giờ để tổng hợp lại, hy vọng bài viết có ích cho bạn.
Cuối cùng bài tổng hợp phân tích về Spring transaction mà tôi đã hứa với độc giả một thời gian trước cũng đã có. Phần nội dung này khá quan trọng, dù là trong công việc hay phỏng vấn, nhưng tài liệu tham khảo tốt trên mạng lại tương đối ít.
Transaction là gì?
Transaction là một nhóm các thao tác logic, hoặc tất cả cùng thực thi, hoặc không thao tác nào được thực thi.
Các câu hỏi phỏng vấn liên quan đến Spring Boot là nội dung độc quyền dành cho Knowledge Planet của tôi (nhấp vào liên kết để xem giới thiệu chi tiết và cách tham gia), đã được tổng hợp vào Cẩm nang phỏng vấn Java.
Giải thích source code cốt lõi của Spring Boot là nội dung độc quyền dành cho Knowledge Planet của tôi (nhấp vào liên kết để xem giới thiệu chi tiết và cách tham gia), đã được tổng hợp vào Series source code Java nên đọc.
