Spring AOP的相关基础介绍


引言:

Aop(Aspect-Oriented Programming,面向切面编程)是一种新的方法论,是对传统OOP(Object-Oriented Programming,面向对象编程)的补充

AOP简介

  • AOP主要编程对象是切面(aspect),而切面是横切关注点的模块化。
  • 在应用AOP编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方式应用, 并且不必修改受影响的类。这样一来横切关注点就被模块化到特殊的对象(切面)里。
  • AOP的好处:
    1.每个事物逻辑位于一个位置,代码不分散,便于维护和升级
    2.业务模块更简洁,只包含核心业务代码

AOP相关术语

  • 横切关注点:
    验证参数,日志(前置日志、后置日志)等

  • 切面(Aspect):
    横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象

  • 通知(Advice):
    切面必须要完成的工作

  • 目标(Target):
    被通知的对象

  • 代理(Proxy):
    向目标对象应用通知之后创建的对象

  • 连接点(Joinpoint):
    程序执行的某个特定位置:如类某个方法调用前、调用后、方法抛出异常后等。连接点由两个信息确定:方法表示的程序执行点;相对点表示的方位。例如 ArithmethicCalculator#add() 方法执行前的连接点: 执行点为 ArithmethicCalculator#add(); 方位为该方法执行前的位置

  • 切点(pointcut):
    每个类都拥有多个连接点:例如 ArithmethicCalculator 的所有方法实际上都是连接点,即连接点是程序类中客观存在的事务。AOP通过切点定位到特定的连接点。类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一对一的关系,一个切点匹配多个连接点,切点通过org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件

相关术语 描述
横切关注点 验证参数,日志(前置日志、后置日志)等
切面(Aspect) 横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象
通知(Advice) 切面必须要完成的工作
目标(Target) 被通知的对象
代理(Proxy) 向目标对象应用通知之后创建的对象
连接点(Joinpoint) 程序执行的某个特定位置:如类某个方法调用前、调用后、方法抛出异常后等。连接点由两个信息确定:方法表示的程序执行点;相对点表示的方位。例如 ArithmethicCalculator#add() 方法执行前的连接点: 执行点为 ArithmethicCalculator#add(); 方位为该方法执行前的位置
切点(pointcut) 每个类都拥有多个连接点:例如 ArithmethicCalculator 的所有方法实际上都是连接点,即连接点是程序类中客观存在的事务。AOP通过切点定位到特定的连接点。类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一对一的关系,一个切点匹配多个连接点,切点通过org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件

文章作者: YangChongZhi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 YangChongZhi !
评论
 上一篇
基于AspectJ注解来使用Spring AOP 基于AspectJ注解来使用Spring AOP
引言: AspectJ:Java社区里最完整最流行的AOP框架.在Spring2.0以上版本中, 可以使用基于AspectJ注解或基于XML配置的AOP 1、在Spring中启用AspectJ注解支持 要在Spring应用中使用Aspec
2020-03-09
下一篇 
Spring中使用动态代理解决日志需求 Spring中使用动态代理解决日志需求
引言: 使用动态代理技术实现在类的方法中加入日志信息。通过动态代理的方式写入日志信息不会给原来的类带来代码混乱和分散的问题,便于维护 ArithmeticCalculator.java ArithmeticCalculatorImpl.
2020-03-09
  目录