跳至主要內容
Spring AOP

1. aop

面向切面编程(aop),是对传统面向对象编程(oop)的一种补充。
oop的最小单位是类(class),aop的最小单位是切面(aspect)。切面可以在不改变原来代码的情况下,对某些类进行功能加强。比如:spring事务管理,仅仅只要在需要事务的方法上加上@Transactional就可以得到加强。

1.1 aop概念

  • Aspect:在spring里面,一个切面相当于一个类带上@Aspect注解。在这个切面里面写你想增强哪些类,以及增强的内容。
  • Join point:连接点就是代表具体要增强的方法,比如方法A加上了@Transactional,那么方法A在事务切面眼中就是一个连接点。
  • Advice: advice代表的是增强,在上面那个例子中,方法A需要事务增强,那么这个事务
    就是advice了。通过在连接点执行前后将增强分为前置(before),后置(after),环绕(around)增强。所以说可以把增强(advice)理解为拦截器(interceptor)。
  • Pointcut:切入点就像正则表达式,它匹配了一组连接点。advice就是作用在Pointcut匹配的一组Join point上。
  • Target object:目标对象是指被一个或者多个切面增强的对象,又称增强对象。这些对象是通过动态代理实现的,所以说本质上是代理对象。
  • AOP proxy:spring为了实现aop,使用了jdk动态代理和cglib代理来创建增强对象。

起凡大约 3 分钟SpringAOP