Aspect Oriented Programming的缩写,面向切面变成,就像是拦路打劫,把别人执行的逻辑中间拦下来,干自己的事情,至于别人的逻辑能不能继续,或者怎样继续,你都可以控制。
网上介绍AOP的文章一大堆,比如 百度百科 、维基百科上就有。
在Java语言了里边AOP有三种实现方式。
编译期AOP
就是干预javac的编译过程,把代码直接编译到class文件里边,这样不影响运行的性能。
这种实现的代表有:AspectJ
运行期AOP
就是编译过程我不管,我管的是ClassLoader。Java 要想执行一个class文件,首先要通过ClassLoader把class字节码加载到内存,然后执行,那么这种实现就是在加载的过程中,把class字节码改了,相当于把这个拦截逻辑写入到字节码。还有一种方式就是在运行期根据配置动态生成class字节码,然后再通过ClassLoader去重新加载class字节码。
这种实现的代表有:AspectWerkz、Spring、JDK的动态代理。
参考
http://www.blogjava.net/hello-yun/archive/2014/09/28/418365.html