Spring aop là gì

Giới thiệu văn bản bài bác viết

Chào những em ,công ty để từ bây giờ bọn họ sẽ tìm hiểu về AOPhường Annotation có chân thành và ý nghĩa là gì nhé .

1. Spring AOP. Annotation là gì

Trong bài bác AOPhường. advise bọn họ sử dụng xml nhằm thông số kỹ thuật cho advise, pointcut và around. Hôm ni chúng ta sẽ sử dụng annotation để gia công AOP nhỏng


Bạn đang xem: Spring aop là gì

Around

2. Cấu hình tệp tin pom

Chúng ta thêm những thỏng viện AspectJrt và aspecttools vào vào dự án nhằm sử dụng aop

3. Tạo Model

Trong ví dụ hôm nay bọn họ vẫn làm việc với Employee. Chúng ta gồm lớp Employee như sau

12345678910111213141516171819package com.gocnhintangphat.com;public class Employee private String name;public String getName() return name;
Loggablepublic void setName(String nm) this.name=nm;public void throwException()throw new RuntimeException("Dummy Exception");
Chúng ta thấy có annotation là
Loggable thì mẫu annotation này sử dụng ghi log cùng bởi vì bọn họ tự khái niệm ra. Phần này anh đang nói rõ rộng trong phần 10 sau đây.

3. Tạo Service

Chúng ta sẽ khởi tạo Class EmployeeService để mang Employee nhỏng sau

Aspect trong số ấy ta định nghĩa thủ tục làm sao đề xuất hook trước lúc chạy. Trong ví dụ này họ vận dụng Lúc chạy thủ tục getName

Một Aspect Class sẽ tiến hành đánh dấu bằng
Before được áp dụng để chạy trước khi method getName được gọi

12345678910111213141516import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;
Before("execution(public String getName())")public void getNameAdvice()System.out.println("Executing Advice on getName()");
Before("execution(*.com.gocnhintangphat.com.*.get*())")public void getAllAdvice()System.out.println("Service method getter called");}
6. Ví dụ với AOP. Pointcut MethodChúng ta thực hiện cách tiến hành làm sao sẽ tiến hành chạy AOPhường hoặc toàn bộ cách làm được chạy bằng sử dụng within

1234567891011121314151617181920212223242526
Before("getNamePointcut()")public void loggingAdvice()System.out.println("Executing loggingAdvice on getName()");
Before("getNamePointcut()")public void secondAdvice()System.out.println("Executing secondAdvice on getName()");
Before("allMethodsPointcut()")public void allServiceMethodsAdvice()System.out.println("Before executing service method");//Pointcut khổng lồ execute on all the methods of classes in a package
Pointcut("within(com.gocnhintangphat.com.service.*)")public void allMethodsPointcut()}
7. Ví dụ với AOPhường JoinPoint và AdviceChúng ta sử dụng AOPhường cho các cách tiến hành là set tất cả trong Employee model

123456789101112131415161718192021import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;
Before("execution(public void com.gocnhintangphat.com.Mã Sản Phẩm..set*(*))")public void loggingAdvice(JoinPoint joinPoint)System.out.println("Before running loggingAdvice on method="+joinPoint.toString());System.out.println("Arguments Passed=" + Arrays.toString(joinPoint.getArgs()));//Advice arguments, will be applied lớn bean methods with single String argument
Before("args(name)")public void logStringArguments(String name)System.out.println("String argument passed="+name);}
EmployeeAfterAspect

8. ví dụ như cùng với AOP. After Aspect

Chúng ta sử dụng


Xem thêm: What Is The Meaning Of "That One / This One Là Gì Trong Tiếng Anh?

After nhằm chạy AOP.. khi method đã chạy xong

12345678910111213141516171819202122232425import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;
After("args(name)")public void logStringArguments(String name)System.out.println("Running After Advice. String argument passed="+name);
AfterThrowing("within(com.gocnhintangphat.com.Employee)")public void logExceptions(JoinPoint joinPoint)System.out.println("Exception thrown in Employee Method="+joinPoint.toString());
AfterReturning(pointcut="execution(* getName())", returning="returnString")public void getNameReturningAdvice(String returnString)System.out.println("getNameReturningAdvice executed. Returned String="+returnString);}
9. lấy ví dụ AOP Around Aspect
1234567891011121314151617181920import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;
Around("execution(* com.journaldev.spring.model.Employee.getName())")public Object employeeAroundAdvice(ProceedingJoinPoint proceedingJoinPoint)System.out.println("Before invoking getName() method");Object value = null;try value = proceedingJoinPoint.proceed(); catch (Throwable e) e.printStackTrace();System.out.println("After invoking getName() method. Return value="+value);return value;}
10. Tự sản xuất annotation aop pointcutNhư các em thấy trong Module Employee ta thấy một annotation là
Loggable phía trên chính là annotation bởi bọn họ từ bỏ tạo ra bằng cách sau

12345package com.gocnhintangphat.com;public
Loggable bắt đầu được chạy hệt như sau

1234567891011import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;
annotation(com.gocnhintangphat.com.Loggable)")public void myAdvice()System.out.println("Executing myAdvice!!");}

*
Play

Mọi tín đồ hãy Subscribe kênh youtube sau đây nhé để cập nhật những đoạn Clip tiên tiến nhất về chuyên môn cùng năng lực mềm


*

*



Xem thêm: Chèo Thuyền Tiếng Anh Là Gì ? Chèo Thuyền Trong Tiếng Anh Là Gì

Về Tác mang Blog tập trung phần nhiều kỹ năng và số đông yêu cầu của anh về ngành phần mềm. Nhằm giúp đỡ chúng ta học sinh, sinh viên gọi sâu rộng về nghề lập trình thông qua những kinh nghiệm thực tiễn mà anh làm cho trong những doanh nghiệp Âu, Mỹ và Nhật. Trong Blog này anh gồm biến hóa câu chữ một vài kỹ năng từ bỏ các blog danh tiếng bằng tiếng Anh thanh lịch tiếng Việt nhằm góp những người phát âm được nguyên tắc thuận tiện rộng.

Chuyên mục: Định Nghĩa