Spring aop là gì
Giới thiệu nội dung bài bác viết
Chúng ta thấy tất cả annotation là
Loggable thì chiếc annotation này dùng ghi log với do họ tự có mang ra. Phần này anh đã nói rõ rộng trong phần 10 bên dưới đây.3. Chế tạo ra Service
Before được thực hiện để chạy trước khi method getName được gọi
6. Lấy ví dụ với AOP Pointcut MethodChúng ta thực hiện phương thức nào sẽ tiến hành chạy AOP hoặc toàn bộ phương thức được chạy bằng áp dụng within
7. Ví dụ như với AOP JoinPoint cùng AdviceChúng ta thực hiện AOP cho những phương thức là set tất cả trong Employee model
EmployeeAfterAspect8. Lấy ví dụ như với AOP After Aspect
9. Lấy một ví dụ AOP Around Aspect
10. Tự tạo thành annotation aop pointcutNhư các em thấy trong Module Employee ta thấy một annotation là
Loggable đây đó là annotation do chúng ta tự tạo thành ra bằng phương pháp sau
Chào các em ,chủ để từ bây giờ chúng ta sẽ khám phá về AOP Annotation có ý nghĩa là gì nhé .
1. Spring AOP Annotation là gìTrong bài xích AOP advise họ sử dụng xml để cấu hình cho advise, pointcut cùng around. Từ bây giờ chúng ta sẽ sử dụng annotation để làm AOP như
Bạn đang xem: Spring aop là gì
Around
Chúng ta thêm các thư viện AspectJrt cùng aspecttools vào trong dự án để thực hiện aop
3. Tạo ra ModelTrong ví dụ lúc này chúng ta sẽ thao tác làm việc với Employee. Chúng ta có lớp Employee như sau
12345678910111213141516171819 | package com.thanhphodong.vn;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"); |
Loggable thì chiếc annotation này dùng ghi log với do họ tự có mang ra. Phần này anh đã nói rõ rộng trong phần 10 bên dưới đây.3. Chế tạo ra Service
Chúng ta sẽ tạo nên Class EmployeeService để lấy Employee như sau
Aspect trong các số ấy ta định nghĩa cách thức nào buộc phải hook trước lúc chạy. Trong ví dụ này bọn họ áp dụng khi chạy cách làm getName Một Aspect Class đang được khắc ghi bằngBefore được thực hiện để chạy trước khi method getName được gọi
12345678910111213141516 | import 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.thanhphodong.vn.*.get*())")public void getAllAdvice()System.out.println("Service method getter called");} |
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 to lớn execute on all the methods of classes in a package Pointcut("within(com.thanhphodong.vn.service.*)")public void allMethodsPointcut()} |
123456789101112131415161718192021 | import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before; Before("execution(public void com.thanhphodong.vn.model..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);} |
Chúng ta sử dụng
After để chạy AOP khi method sẽ chạy xong
12345678910111213141516171819202122232425 | import 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; Xem thêm: Kiêm Tiếng Anh Là Gì ? Kiêm Trong Tiếng Anh Là Gì After("args(name)")public void logStringArguments(String name)System.out.println("Running After Advice. String argument passed="+name); AfterThrowing("within(com.thanhphodong.vn.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);} |
1234567891011121314151617181920 | import 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;} |
Loggable đây đó là annotation do chúng ta tự tạo thành ra bằng phương pháp sau
12345 | package com.thanhphodong.vn;public Loggable bắt đầu được chạy như sau
![]() Mọi fan hãy Subscribe kênh youtube sau đây nhé để cập nhật các đoạn clip mới độc nhất vô nhị về chuyên môn và kỹ năng mềm![]() ![]() ![]() ![]() Xem thêm: Hình Ảnh Trang Trí Các Góc Mầm Non Sáng Tạo Đẹp Nhất, Hướng Dẫn Trang Trí Góc Lớp Mầm Non Về người sáng tác Blog tập trung những kỹ năng và kiến thức và phần đông trải nghiệm của anh ý về ngành phần mềm. Nhằm giúp đỡ các bạn học sinh, sinh viên gọi sâu hơn về nghề lập trình trải qua các khiếp nghiệm thực tiễn mà anh làm trong số doanh nghiệp Âu, Mỹ và Nhật. Trong Blog này anh có biến đổi nội dung một trong những kiến thức từ những blog nổi tiếng bằng tiếng Anh quý phái tiếng Việt nhằm mục đích giúp mọi bạn hiểu được nguyên lý dễ ợt hơn. cf68 |