Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / Web Development / Java / Spring AOP và AspectJ

Spring AOP và AspectJ

Trong bài viết này, chúng ta cùng nhau tìm hiểu Spring AOPAspectJ là gì nhé.

AOP là gì?

AOP là viết tắt của từ Aspect Oriented Programming – lập trình hướng khía cạnh: là một kỹ thuật lập trình nhằm phân tách chương trình thành các module riêng biệt, không phụ thuộc lẫn nhau. Chương trình sẽ kết hợp các module lại để thực hiện các chức năng nhưng khi sửa đổi 1 chức năng thì chỉ cần sửa 1 module.

AOP thường được sử dụng để thực hiện chức năng ghi log, filter…

Các thuật ngữ dùng trong AOP:

+ Joinpoint: Một điểm trong chương trình,  nó có thể hiểu là những nơi có thể được chèn những “custom action” của bạn. (Ví dụ ghi log)

+ Pointcut: Là cách để xác định Join point.

+ Advice: Là những xử lý phụ được thêm vào xử lý chính. Code để thực hiện các xử lý đó được gọi là Advice.

+ Aspect: thường dùng ở dạng annotation. (Thay vì tạo class implement MethodBeforeAdvice thì ta dùng @Before trên method)

Spring AOP là một thành phần của Spring Framework cho phép lập trình hướng khía cạnh (AOP) trong các ứng dụng Spring.

AspectJ là gì?

AspectJ là một thư viện để thực hiện AOP, nó cung cấp các annotation để định nghĩa các pointcut, advice, target object để sử dụng đơn giản hơn.

Một số Annotation của AspectJ:

  • @Before: Chạy trước khi method được thực thi
  • @After: Chạy sau khi method trả về một kết quả
  • @AfterReturning: Chạy sau khi method trả về một kết quả, lọc lấy kết quả trả về
  • @AfterThrowing: Chạy khi method xảy ra exception
  • @Around: Gồm các tất cả các advice trên
  • @Aspect: Đánh dấu đây là 1 aspect

Cách sử dụng AspectJ

Ở trên mình định nghĩa một Aspect, với pointcut khi có một annotation là RequestMapping (tức một Controller). Mình sử dụng @Around để lấy request và response tiến hành ghi log.

Việc sử dụng AspectJ rất dễ dàng phải không, chúc các bạn thành công.

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Tạo danh sách ngày từ 2 ngày cho trước bằng Stream trong Java

Mục lục Stream là gì?Tạo danh sách ngày từ 2 ngày cho trước bằng StreamBài …

Leave a Reply

avatar
  Subscribe  
Notify of