spring aop

什么是面向切面编程编程

横切关注点:影响应用多处的功能(安全、事务、日志)安全

切面:模块化

横切关注点被模块化为特殊的类,这些类称为切面代理

优势:日志

每一个关注点如今都集中于一处,而不是分散到多处代码中 
服务模块更简洁,服务模块只需关注核心代码。对象

AOP 术语生命周期

  • 通知: 
    • 定义:切面也须要完成工做。在 AOP 术语中,切面的工做被称为通知。
    • 工做内容:通知定义了切面是什么以及什么时候使用。除了描述切面要完成的工做,通知还解决什么时候执行这个工做。
    • Spring 切面可应用的 5 种通知类型:
  1. Before——在方法调用以前调用通知
  2. After——在方法完成以后调用通知,不管方法执行成功与否
  3. After-returning——在方法执行成功以后调用通知
  4. After-throwing——在方法抛出异常后进行通知
  5. Around——通知包裹了被通知的方法,在被通知的方法调用以前和调用以后执行自定义的行为
  • 链接点: 
    • 定义:链接点是一个应用执行过程当中可以插入一个切面的点。
    • 链接点能够是调用方法时、抛出异常时、甚至修改字段时、
    • 切面代码能够利用这些点插入到应用的正规流程中
    • 程序执行过程当中可以应用通知的全部点。
  • 切点: 
    • 定义:若是通知定义了“什么”和“什么时候”。那么切点就定义了“何处”。切点会匹配通知所要织入的一个或者多个链接点。
    • 一般使用明确的类或者方法来指定这些切点。
    • 做用:定义通知被应用的位置(在哪些链接点)
  • 切面: 
    • 定义:切面是通知和切点的集合,通知和切点共同定义了切面的所有功能——它是什么,在什么时候何处完成其功能。
  • 引入: 
    • 引入容许咱们向现有的类中添加方法或属性
  • 织入: 
    • 织入是将切面应用到目标对象来建立的代理对象过程。
    • 切面在指定的链接点被织入到目标对象中,在目标对象的生命周期中有多个点能够织入
  1. 编译期——切面在目标类编译时期被织入,这种方式须要特殊编译器。AspectJ的织入编译器就是以这种方式织入切面。
  2. 类加载期——切面在类加载到
  3. JVM ,这种方式须要特殊的类加载器,他能够在目标类被引入应用以前加强该目标类的字节码。AspectJ5 的 LTW 就支持这种织入方式
  4. 运行期——切面在应用运行期间的某个时刻被织入。通常状况下,在织入切面时候,AOP 容器会为目标对象动态的建立代理对象。Spring AOP 就是以这种方式织入切面。
相关文章
相关标签/搜索