Spring AOP
Aspect Oriented Programming
Proqrama kenardan yanashilir.
Niye lazimdir ?
Esas istifade olunan ozelliyi Logging dir.
Istifadesi :
Ilk once classin bashina @Aspect annotation yazilir.
Proqrama kenardan yanashilir.
Niye lazimdir ?
- Proqramda chixan xetalar barede xeberdar olmaq uchun try catch istifade edilmelidir. Bunu AOP la da etmek mumkundur.
- Tutaq ki, her hansi bir servis classin da her hansi bir metoda hansi userin muraciet etdiyini teyin etmek lazimdir, meselen hal hazir da login olar user hansi metodlara muraciet etdi.
Bu meseleni her bir metod uchun ayrica da yazmaq olar, sadece metodlari sayi chox olduqda bu chetin olacaq.
Esas istifade olunan ozelliyi Logging dir.
Istifadesi :
Ilk once classin bashina @Aspect annotation yazilir.
Note: @Component de yazilmalidir ki, bu class Spring terefinden yaradilsin ve idare olunsun.
Daha sonra metodun veziyyetine uygun olaraq asagidaki annotationlar yazila biler.
@Before - Metod ishe dushmezden qabaq bu ishe dushur.
@After - Metod ishini bitirdikden sonra bu ishe dushur.
@AfterReturning - ishe dushub result qaytarandan sonra bu ishe dushur. Bu metodun ozu de gelen result u return etmelidir.
@AfterThrowing - metod eger her hansi exception throw edecekse, edenden sonra bu ishe dushur
@Around - @Before, @After, @AfterReturning ozunde saxladir.
JoinPoint ve ProceedingJoinPoint (@Around)
Bu classlarin obyektinlerine target metod haqqinda informasiya set olunur. Proceeding ferqi bundadir ki, ozumuz manual olaraq metodun ishlemesini temmin etmeliyik. pjp.proceed();
Daha sonra metodun veziyyetine uygun olaraq asagidaki annotationlar yazila biler.
@Before - Metod ishe dushmezden qabaq bu ishe dushur.
@After - Metod ishini bitirdikden sonra bu ishe dushur.
@AfterReturning - ishe dushub result qaytarandan sonra bu ishe dushur. Bu metodun ozu de gelen result u return etmelidir.
@AfterThrowing - metod eger her hansi exception throw edecekse, edenden sonra bu ishe dushur
@Around - @Before, @After, @AfterReturning ozunde saxladir.
JoinPoint ve ProceedingJoinPoint (@Around)
Bu classlarin obyektinlerine target metod haqqinda informasiya set olunur. Proceeding ferqi bundadir ki, ozumuz manual olaraq metodun ishlemesini temmin etmeliyik. pjp.proceed();
ControllerAdvice ishini AOP vasitesile de gormek olar. Sadece ControllerAdvice elave dependency teleb etmediyinden istifadesi elverishlidir. Bashqa bir ferq ondadir ki, ControllerAdvice vasitesile ResponseBody return elemek mumkundur.
Elde etdiyimiz melumatlara gore de ferqler movcuddur.
Bezi tutoriallar:
https://www.baeldung.com/spring-aop
https://www.baeldung.com/spring-aop-pointcut-tutorial
=====UPDATE - 17.06.21=====