/blog/*

Konsep Aspect Oriented Programming (AOP)

Paradigma AOP merupakan suatu teknik untuk memisahkan fungsi-fungsi common yang cenderung digunakan/diimplementasikan berulang kali (seperti validation, transaction management, logging, error handling, dll) diberbagai level/layer bisnis proses. Fungsi-fungsi ini sering disebut sebagai cross-cutting concerns, dimana suatu fungsi yang sama terdapat diberbagai level/layer aplikasi.

The most important functionality is AOP provides the pluggable way to dynamically add the additional concern (aspect) before, after or around the actual logic.

Cross Cutting Concerns

Fungsi-fungsi cross-cutting tersebut akan dikumpulkan menjadi suatu module yang disebut Aspect. Kemudian aspect tersebut akan di embed langsung ke kode bisnis proses tanpa banyak mengubah kode program.

AOP Terminologi

Berbagai istilah umum dalam konsep AOP:

  • Aspect: Fungsi-fungsi yang diimplementasikan diberbagai tempat. Contohnya logging, transaction management, security, dll.
  • Join Point: Suatu titik pada suatu proses eksekusi program/fungsi dimana aspect bisa di terapkan. Bisa saja sebelum/sesudah eksekusi program.
  • Advice: Merupakan bentuk nyata dari aspect. Dimana aspect hanya berupa konsep, advice merupakan bentuk implementasi dari konsep tersebut.
  • Point Cut: Yang menentukan suatu advice diterapkan atau tidak pada suatu join point.
  • Target: Object/fungsi aplikasi yang akan diimplementasikan/embed dengan advice.
  • Proxy: Object yang dibuat oleh suatu framework setelah diterapkan advice pada target object.
  • Weaving: Proses menerapkan aspect pada target untuk menghasilkan proxy object. Proses weaving dapat dilakukan pada saat compile, atau pada saat runtime. Spring AOP secara default melakukan weaving pada saat runtime.

Aspect Oriented Programming

ref: