我们仔细回顾静态代理的实现过程。我们要在所有的方法中添加切面,我们就要在代理类中重写所有的业务方法。更有甚者,我们有N个业务类,就要定义N个代理类。这是很庞大的工作量。
这就是动态代理出现的背景,相比都可以猜得到,动态代理就是将这一系列繁琐的步骤自动化,让程序自动为我们生成代理类。
何为动态代理?
动态代理,又成为运行时代理。在程序运行的过程中,调用了生成代理类的代码,将自动生成业务类的代理类。不需要我们手共编写,极高的提高了工作效率和调整了程序员的心态。
原理不必多说,就是动态生成静态代理的代码。我们要做的,就是选用一种生成代码的方式去生成。
今天我分享一个简单的AOP框架,代码使用Emit生成。当然,Emit 代码的写法不是今天要讲的主要内容,需要提前去学习。
先说效果:
定义一个Action特性类 ActionAttribute继承自 ActionBaseAttribute,里面在Before和After方法中输出两条日志;











