AOP的相关术语

什么是AOP

AOP:全称是Aspect Oriented Programming 即:面向切面编程。通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生泛型。利用AOP可以对业务逻辑的各部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。

AOP的作用及优势

作用:在程序运行期间,不修改源码对已有方法进行增强。
优势:减少重复代码、提高开发效率、维护方便。

AOP的实现方式

使用动态代理技术。

动态代理常用的两种方式

1、基于接口的动态代理
提供者:JDK官方的Proxy类。
要求:被代理类最少实现一个接口。

2、 基于子类的动态代理
提供者:第三方的CGLib,如果报asmxxxx异常,需要导入asm.jar。
要求:被代理类不能用final修饰的类(最终类)。
AOP的相关术语

spring中基于XML的AOP配置步骤

1、把通知Bean也交给spring来管理。
2、使用aop:config标签标明开始AOP配置。
3、使用aop:aspect标签标明配置切面。

  • id属性:是给切面提供一个唯一标识。
  • ref属性:是指定通知类bean的Id。
    4、在aop:aspect标签的内部使用对应标签来配置通知的类型。我们现在示例是让printLog方法在切入点方法执行之前执行,所以是前置通知。method属性:用于指定Logger类中哪个方法是前置通知。pointcut属性:用于指定切入点表达式,该表达式的含义指的是对业务层中哪些方法增强。

切入点表达式的写法:
关键字:execution(表达式)。
表达式:访问修饰符 返回值 包名.包名.包名…类名.方法名(参数列表)。

标准表达式写法:
public void com.itheima.service.impl.AccountServiceImpl.saveAccount()

AOP的相关术语