SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

概述

SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 JDK的动态代理

SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 

 1 package com.haifei.proxy.jdk;
 2 
 3 /**
 4  * 目标类接口
 5  */
 6 public interface TargetInterface {
 7 
 8     public void save();
 9 
10 }
 1 package com.haifei.proxy.jdk;
 2 
 3 /**
 4  * 目标类
 5  */
 6 public class Target implements TargetInterface{
 7 
 8     @Override
 9     public void save() {
10         System.out.println("save running...");
11     }
12 
13 }
 1 package com.haifei.proxy.jdk;
 2 
 3 /**
 4  * 增强类
 5  */
 6 public class Advice {
 7 
 8     public void before(){
 9         System.out.println("前置增强。。。");
10     }
11 
12     public void after(){
13         System.out.println("后置增强。。。");
14     }
15 
16 }
 1 package com.haifei.proxy.jdk;
 2 
 3 import java.lang.reflect.InvocationHandler;
 4 import java.lang.reflect.Method;
 5 import java.lang.reflect.Proxy;
 6 
 7 /**
 8  *  JDK 的动态代理-测试类
 9  *
10  *      动态代理参考:
11  *          JavaWeb19.6【Filter&Listener:利用设计模式之代理模式增强对象的功能】
12  *          https://www.cnblogs.com/yppah/p/14974136.html
13  */
14 public class ProxyTest {
15 
16     public static void main(String[] args) {
17         //目标对象
18         final Target target = new Target();
19         //增强对象
20         final Advice advice = new Advice();
21 
22         //获取动态生成的代理对象
23         TargetInterface proxy = (TargetInterface)Proxy.newProxyInstance(
24                 target.getClass().getClassLoader(), //目标对象类加载器
25                 target.getClass().getInterfaces(), //目标对象相同的接口字节码对象数组
26                 new InvocationHandler() {
27                     //调用代理对象的任何方法  实质执行的都是invoke方法
28                     @Override
29                     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
30                         advice.before(); //前置增强
31                         Object invoke = method.invoke(target, args); //执行目标方法
32                         advice.after(); //后置增强
33                         return invoke;
34                     }
35                 }
36         );
37 
38         //调用代理对象的方法
39         proxy.save();
40     }
41     /*
42     前置增强。。。
43     save running...
44     后置增强。。。
45      */
46 
47 }

cglib动态代理

SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

 SSM9.1【Spring:面向切面编程AOP-Spring的AOP简介】

 

上一篇:[深入理解Java虚拟机]<自动内存管理>


下一篇:牛客多校第3场 24点