AOP从静态代理到动态代理(Emit实现)详解

2020-01-05 09:19:14王冬梅

接下来我们看看AOP框架的工作原理以及实过程。

【实现思路】

AOP框架呢,一般通过静态代理和动态代理两种实现方式。

  AOP,静态代理,动态代理,Emit

何为静态代理?

静态代理,又叫编译时代理,就是在编译的时候,已经存在代理类,运行时直接调用的方式。说的通俗一点,就是自己手动写代码实现代理类的方式。

我们通过一个例子来展现一下静态代理的实现过程:

我们这里有一个业务类,里面有方法Test(),我们要在Test调用前和调用后分别输出日志。

AOP,静态代理,动态代理,Emit

我们既然要将Log当作一个切面,我们肯定不能去动原有的业务代码,那样也违反了面向对象设计之开闭原则。

那么我们要怎么做呢?我们定义一个新类 BusinessProxy 去包装一下这个类。为了便于在多个方法的时候区分和辨认,方法也叫 Test()