Spring AOP

Aspect Oriented Programming
Proqrama kenardan yanashilir.
Niye lazimdir ?
  1. Proqramda chixan xetalar barede xeberdar olmaq uchun try catch istifade edilmelidir. Bunu AOP la da etmek mumkundur.
     
  2. 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.
Spring Proxy Pattern istifade etdiyine gore AOP anlayishindan Spring de movcuddur. Yeni bir her hansi bir oz obyektimizin metodunu cagiran zaman, eslinde hemin obyektin Proxy obyektininin metodunu cagiririq. Hemin Proxy obyekt gedir bizim obyektin metodunu cagirir. Bu da Spring e AOP u istifade etmeye imkan yaradir.

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();

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=====



Popular posts from this blog

Validation for AZ phone numbers with RegEx in Java

Java necə işləyir, kod nədir ?

@Transactional annotation haqqinda. Cascade istifade olunmasi