AOP是面向切面编程,是一种设计思维,它要在不扭转原有指标对象的根底上,为指标对象基于动静织入的特定形式进行性能扩大。这里的特定形式一种是编译时动静,还有一种是运行时动静。咱们能够将设计思维了解为OOP(面向对象编程)思维的补充和欠缺,OOP强调的一种动态过程,而AOP是一种动静过程,它要为设计好的对象在动静编译或运行时做服务增益,例如记录日志、事务加强、权限管制等。AOP能够在系统启动时为指标类型创立子类或兄弟类型对象,这样的对象咱们称之为动静代理对象。

创立代理对象的形式有两种:

1.借助JDK官网API为指标对象创立其兄弟类型,然而指标对象类型须要实现相应的接口

2.借助CGLIB库为指标对象类型创立其子类类型对象,然而指标对象类型不能应用final润饰

AOP相干术语

切面对象(Aspect):封装了扩大业务逻辑的对象,在spring中能够应用@Aspect形容。

切入点(Poincut):定义了切入扩大业务逻辑的一些办法的汇合,就是哪些办法要运行的时候切入扩大业务,会通过表达式进行相干定义。一个切面中能够定义多个切入点的定义

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

告诉(Advice):切面(Aspect)外部封装扩大业务逻辑的具体方法对象,一个切面中能够有多个告诉