Beberapa jenis notifikasi umum dan fungsi dasarnya di AOP:
@Sebelum: Pra-pemberitahuan, dijalankan sebelum metode target dijalankan.
@Setelah: Pemberitahuan posting, apa pun hasil eksekusi metode (termasuk pengecualian), akan dieksekusi setelah metode target dijalankan.
@AfterReturning: Pemberitahuan setelah pengembalian, dijalankan setelah metode target berakhir secara normal, tetapi tidak akan dieksekusi jika metode tersebut mengeluarkan pengecualian.
@AfterThrowing: Pemberitahuan pengecualian, dijalankan ketika metode target mengeluarkan pengecualian.
@Around: Pemberitahuan sekeliling, Anda dapat melakukan operasi yang disesuaikan sebelum dan sesudah metode target dijalankan, dan Anda bahkan dapat memutuskan apakah akan terus menjalankan metode target.
Perbedaan antara perintah eksekusi AOP di Spring4 dan Spring5
Perintah eksekusi AOP di Spring4
Urutan eksekusi normal:
@Sebelum (pra-pemberitahuan)
eksekusi metode target
@Setelah (pemberitahuan posting)
@AfterReturning (pemberitahuan setelah pengembalian)
Urutan eksekusi pengecualian:
@Sebelum (pra-pemberitahuan)
Eksekusi metode target (melempar pengecualian)
@Setelah (pemberitahuan posting)
@AfterThrowing (Pemberitahuan pengecualian)
Jika notifikasi surround (@Around) dikonfigurasi, pra-pemrosesan notifikasi surround akan dijalankan sebelum @Before, dan pasca-pemrosesan notifikasi surround juga akan dijalankan sebelum @After, @AfterReturning, dan @AfterThrowing.
Perintah eksekusi AOP di Spring5
Pada Spring 5, urutan eksekusi AOP telah mengalami beberapa perubahan, terutama tercermin pada urutan eksekusi @AfterReturning dan @After:
Urutan eksekusi normal:
@Sebelum (pra-pemberitahuan)
eksekusi metode target
@AfterReturning (pemberitahuan setelah pengembalian)
@Setelah (pemberitahuan posting)
Urutan eksekusi pengecualian:
@Sebelum (pra-pemberitahuan)
Eksekusi metode target (melempar pengecualian)
@AfterThrowing (Pemberitahuan pengecualian)
@Setelah (pemberitahuan posting)
Jika notifikasi sekitar (@Around) dikonfigurasi, urutan eksekusi notifikasi sekitar tetap menjalankan pra-pemrosesan terlebih dahulu, kemudian eksekusi metode target, lalu notifikasi lainnya (@AfterReturning, @AfterThrowing, @After), dan terakhir sekitar Pasca-pemrosesan notifikasi.