Aop là gì

Để hiểu rõ hơn về Spring:

Spring phần 1: Spring là gì ? Giới thiệu Spring Framework vào JavaSpring phần 2: Cài đặt Spring Tool Suite Cho Eclipse

Và thuộc mang lại với Series Spring Core:

Spring Vi xử lý Core – Phần 1: Spring IoC , Inversion of Control trong SpringSpring Core – Phần 2: Spring Bean, Các scope trong Spring, Spring Bean ScopeSpring bộ vi xử lý Core – Phần 3: Spring Dependency Injection, DI trong Spring, đối chiếu CI – SISpring bộ vi xử lý Core – Phần 4: Spring Dependency Injection với Object, Collections, MapSpring Chip Core – Phần 5: Spring AOPhường. là gì? code ví dụ cùng với Spring AOPSpring Core – Phần 6: AspectJ là gì? Spring AOP.. + AspectJ ví dụ cùng với AspectJSpring Core: Phần 7 – Spring PropertyPlaceholderConfigurer, lấy dữ liệu trường đoản cú file propertiesSpring Core – Phần 8: Autowiring vào Spring, annotation
Autowired trong Spring, các thứ hạng autowiringSpring Core – Phần 9: Spring Auto Component Scanning, Các annotation tuyệt dùng vào SpringCode ví dụ Spring gọi tệp tin trường đoản cú resource folder (resources)Code ví dụ gửi gmail – gmail với Spring

1. Spring AOP là gì?

Aspect Oriented Programming(AOP) là một trong kỹ thuật lập trình dùng làm bóc tách lô ghích lịch trình thành các phần riêng rẽ biệt…Trong Spring AOP, gồm 4 các loại advice được hỗ trợ:Before advice: chạy trước khi method được thực thiAfter returning advice: Chạy sau khi method trả về một kết quảAfter throwing adivce: Chạy Lúc method ném nhẹm ra một exceptionAround advice: Chạy Lúc method được tiến hành (Bao gồm cả 3 các loại advice trên)Tại bài trước tôi đã ra mắt rõ AOP.

Bạn đang xem: Aop là gì

Xem thêm: " Key Là Gì Trong Tiếng Anh? Nghĩa Của Từ Key Trong Tiếng Việt

là gì, tính năng với đặc điểm của nó buộc phải vào bài bác này mình sẽ đa số tập trung vào giải pháp tiến hành AOPhường. trong Spring.

2. Code ví dụ cùng với Spring AOPhường.

Nhắc lại một chút về một số trong những khái nhiệm và thuật ngữ vào AOPhường với Spring (Phần này khá trừu tượng một chút, chúng ta so sánh với ví dụ dưới để phát âm hơn)Join point: là các điểm vào công tác ví dụ điểm thực thi method (method execution), điểm cách xử trí excpetion, field access… Spring chỉ hỗ trợ method execution join pointAdvice: một hành vi tiến hành sinh hoạt joint pointPointcut: Là expression language góp khớp nối cùng với joint pointIntroduction: Cho phép introduce những new interface tới bất kể object adviced làm sao.Target Object: Object sẽ tiến hành advicedAspect: là một trong class bao gồm các advice với những joint pointInterceptor: là một trong những aspect chỉ tất cả độc nhất vô nhị một adviceAOP Proxy: dùng làm thiết đặt những AspectWeaving: là các bước nối các aspect với các object, types để tạo cho advised object.Spring Chip Core - Phần 5: Spring AOP là gì? code ví dụ với Spring AOPVí dụ tởm điểncùng với AOPhường cơ mà ta xuất xắc dùng chính là công tác triển khai log.Bây giờ đồng hồ mình sẽ tạo nên 1 class với những method, tiếp đến áp dụng AOPhường nhằm tiến hành log các method của class theo cả 4 một số loại advice:Khai báo những thư viện nhằm thực hiện applicationContext, bean, aop vào spring: org.springframework spring-beans 4.3.13.RELEASE org.springframework spring-context 4.3.13.RELEASE org.springframework spring-aop 4.3.13.RELEASETạo class Hello.java với 3 method:public class Hello public void method1() System.out.println("+++++++++++++++++++++++++++++++"); System.out.println("method 1"); public void method2() System.out.println("+++++++++++++++++++++++++++++++"); System.out.println("method 2"); public void method3() System.out.println("+++++++++++++++++++++++++++++++"); System.out.println("method 3"); throw new IllegalArgumentException(); applicationContext.xml Demo:public static void main(String<> args) throws Exception ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Hello hello = (Hello) context.getBean("hello"); hello.method1(); hello.method2();Kết quả:+++++++++++++++++++++++++++++++method 1+++++++++++++++++++++++++++++++method 2Áp dụng before adviceTạo classDemoBeforeAdvice.java có mang hành vi trước lúc bí quyết method của class Hello được chạy:public class DemoBeforeAdvice implements MethodBeforeAdvice public void before(Method method, Object<> args, Object target) throws Throwable System.out.println("before method: " + method.getName()); MethodBeforeAdvice: là 1 aspectmặt khác cũng chính là mộtInterceptor vị nó chỉ có một adviceDemoBeforeService: là một trong những AOP proxy, nó thiết lập lại aspect làMethodBeforeAdviceaplicationContext.xml demoBeforeAdvice target object đang là đối tượng người dùng hello.Demo:public static void main(String<> args) throws Exception ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Hello hello = (Hello) context.getBean("helloProxy"); hello.method1(); hello.method2();Kết quả:before method: method1+++++++++++++++++++++++++++++++method 1before method: method2+++++++++++++++++++++++++++++++method 2Tương từ mình sẽ tạo các proxy triển khai thiết lập After returning advice, After throwing adivce, Around advice:import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;public class DemoAfterAdvice implements AfterReturningAdvice public void afterReturning(Object returnValue, Method method, Object<> args, Object target) throws Throwable System.out.println("after method: " + method.getName()); import org.springframework.aop.ThrowsAdvice;public class DemoThrowAdvice implements ThrowsAdvice public void afterThrowing(IllegalArgumentException e) throws Throwable System.out.println("throw advice method: " ); import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;public class DemoAroundAdvice implements MethodInterceptor public Object invoke(MethodInvocation invocation) throws Throwable // same with MethodBeforeAdvice System.out.println("around - before method: " + invocation.getMethod().getName()); try // proceed to lớn original method Call Object result = invocation.proceed(); // same with AfterReturningAdvice System.out.println("around - before method: " + invocation.getMethod().getName()); return result; catch (IllegalArgumentException e) // same with ThrowsAdvice System.out.println("around - throw advice method: " + invocation.getMethod().getName()); throw e; applicationContext.xml demoBeforeAdvice demoAfterAdvice demoThrowAdvice demoAroundAdvice Demo:import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp public static void main(String<> args) throws Exception ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Hello hello = (Hello) context.getBean("helloProxy"); hello.method1(); System.out.println(" "); hello.method2(); System.out.println(" "); hello.method3(); Kết quả:before method: method1around - before method: method1+++++++++++++++++++++++++++++++method 1around - before method: method1after method: method1before method: method2around - before method: method2+++++++++++++++++++++++++++++++method 2around - before method: method2after method: method2before method: method3around - before method: method3+++++++++++++++++++++++++++++++method 3around - throw advice method: method3throw advice method: Exception in thread "main" java.lang.IllegalArgumentExceptionOkay, Done!Các bạn cũng có thể download code ví dụ trên trên đâyLoạt bài bác chủ đềJavabên trên trang stackjava.com bản quyền thuộcthầy Trần Hữu Cương. Bài viết đăng trên blog realchampionshipwrestling.com được sự gật đầu đồng ý của tác giả.Thầy Trần HữuCương đã và sẽ tđam mê gia huấn luyện và giảng dạy trên Techmater khoáLộ trình Java Spring Boot Full StackLink cội bài bác viếttrên trên đây.