AOP

AOP是面向切面编程,是一种设计思想,它要在不改变原有目标对象的基础上,为目标对象基于动态织入的特定方式进行功能扩展。这里的特定方式一种是编译时动态,还有一种是运行时动态。我们可以将设计思想理解为OOP(面向对象编程)思想的补充和完善,OOP强调的一种静态过程,而AOP是一种动态过程,它要为设计好的对象在动态编译或运行时做服务增益,例如记录日志、事务增强、权限控制等。AOP可以在系统启动时为目标类型创建子类或兄弟类型对象,这样的对象我们称之为动态代理对象。

创建代理对象的方式有两种:

1.借助JDK官方API为目标对象创建其兄弟类型,但是目标对象类型需要实现相应的接口

2.借助CGLIB库为目标对象类型创建其子类类型对象,但是目标对象类型不能使用final修饰

AOP相关术语

切面对象(Aspect):封装了扩展业务逻辑的对象,在spring中可以使用@Aspect描述。

切入点(Poincut):定义了切入扩展业务逻辑的一些方法的集合,就是哪些方法要运行的时候切入扩展业务,会通过表达式进行相关定义。一个切面中可以定义多个切入点的定义

连接点(JoinPoint):切入点方法集合中封装了某个正在执行的目标方法信息对象。其实就是连接点是切入点方法当中的用来封装这个方法信息的对象。可以通过此对象获取具体的目标方法信息,甚至区调用目标方法(执行扩展业务逻辑)

通知(Advice):切面(Aspect)内部封装扩展业务逻辑的具体方法对象,一个切面中可以有多个通知

你可能感兴趣的:(AOP)