前言
AOP字面意思解释就是面向切面编程,面向切面编程是一种编程模型,我们知道JAVA是面向对象的也就是OOP,OOP这种面向对象的编程适用于定义纵向的关系,但是并不适用定义横向的关系。那么应对这种OOP的存在的这些不利,AOP面向切面的编程模型作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理。
AOP代理介绍
这里说的是AOP的实现,注意不是SpringAOP,首先AOP实现关键在于代理模式,AOP的代理又分为动态代理和静态代理,我们所知的Spring AOP是属于动态代理,而静态代理的的代表是AspectJ;
静态代理
AspectJ是静态代理的增强,所谓静态代理就是AOP框架会在编译阶段生成AOP代理类,因此这种也成为编译时增强,静态代理会在编译阶段将AspectJ(切面)织如到java字节码中,运行的时候就是增强后的AOP对象;
动态代理
SpringAOP是动态代理的,所谓动态代理就是说AOP框架不会去修改字节码文件,而是每次运行时在内存中零时为方法生成AOP对象,这个AOP对象包含目标对象的全部方法。并且在特定的切面做了增强处理,并回调原对