敖胤

绳锯木断,水滴石穿;聚沙成塔,集腋成裘。

导航

Spring AOP简单总结

面向切面编程(Aspect Oriented Programming),是OOP的补充及延续。Spring AOP是在Spring IOC基础上所做的扩展,把程序分解为方面或关注点(剥离出业务)。

AOP实现了源码组成无关性,通过预编译方式(AspectJ)和运行期动态代理模式(Spring AOP/JBoss)实现。

一、应用范围

  • 持久化(Persistence)
  • 事务管理(Transaction Management)
  • 安全(Security)
  • 日志(Logging)、跟踪(Tracing)、优化(Profiling)、监控(Monitoring)
  • 调试(Debugging)
  • 认证(Authentication)
  • 错误/异常处理(Error/Exception handing)
  • 性能优化(Performance optimization)
  • 资源池(Resource pooling)
  • 懒加载(Lazy loading)
  • 同步(Synchronization)

二、核心概念

  1. Joinpoint(连接点):程序执行过程中的特定点,用于指定在程序的什么地方通过AOP加入额外的逻辑。如方法的调用、方法执行的过程、类的初始化、对象的实例化等。

  2. Advice(通知):连接点出运行的代码。分为前置通知、后置通知、环绕通知、异常通知。

  3. Pointcut(切入点):用于定义某个通知何时执行的一组连接点。如一个典型的连接点是方法的调用,而一个典型的切入点就是对某个类的所有方法调用的集合。

  4. Aspect(方面):通知和切入点的组合。这个组合定义了一段程序中应该包括的逻辑以及何时执行改逻辑。

  5. Weaving(织入):将方面真正加入程序代码的过程。根据AOP方案的不同可分为编译时和运行时。

  6. Target Object(目标对象):接受AOP操作修改的对象。

  7. Introduction(引入):改变目标对象的操作。如给对象加入新的方法或字段、让它实现某个接口。

  8. AOP Proxy(AOP代理):将通知应用到目标对象后创建的对象。对于客户端来说,目标对象和代理对象是一样的。

  9. Advisor(顾问):在Spring中一个Advisor就是一个aspect的完整的模块化标识。一般的,一个Advisor包括通知和切入点,是通知和切入点的配置器。

三、AOP原理—代理

  1. 静态代理

    代理对象与被代理对象都必须实现同一个接口。在代理对象中可以实现日志记录等相关服务,并在需要的时候再呼叫被代理的对象;被代理对象中可以只保留业务逻辑。

  2. 动态代理

    在程序运行时,运用反射机制动态创建。

四、通知的类型

  • Before advice(前置通知)
  • After returning advice(后置通知)
  • Around advice(环绕通知)、
  • Throws advice(抛出通知/异常通知)

五、代理实现方式

  1. Proxy Factory Bean

    创建AOP Proxy的基本方法,结合IOC容器一起使用。通知和切入点都可以被IOC管理起来通过使用Java的动态代理或者CGLIB,能够代理接口或class。

  2. 自动代理

    BeanNameAutoProxyCreator

    DefaultAdvisorAutoProxyCreator

posted on 2021-07-04 23:13  敖胤  阅读(41)  评论(0编辑  收藏  举报