• 为什么要使用 aop

在软件开发的过程中,通常我们会遇到非常复杂的功能,比如:用户权限,日志记录,性能统计,安全控制,事务处理,异常处理。比如在打印日志这个功能中,如果要实现这个功能,一般来说需要在各种逻辑代码中插入添加日志打印的java 语句或者sql语句。这样会产生大量与核心业务无关的代码,这就带来了较强的侵入性编码。较为理想的编码方式,日志和业务代码应该是分离的。

  • Spring-AOP 使用场景

这个时候SPRING 框架就设计了AOP,来防止侵入式代码的产生.但AOP并不是Spring所特有的,他的全称是Aspect-Oriented-Programming(面向切面编程)。面向切面编程这种专业词汇听不懂没关系。比如日志,我们直接在代码里写了日志表的插入语句,这个日志称之为横切关注点,

横切关注点指的是一些具有横越多个模块的行为,使用传统的软件开发方法不能够达到有效的模块化的一类特殊关注点。横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。

日志的这个类集中在代码的一个地方就叫切面。侵入式编程中也有横切关注点概念,横切关注点表示散落在程序各个地方的功能;但,切面只有在AOP中才有,那是横切关注点不再侵入式的散落在程序各个地方而是集中起来被模块化。

Spring  AOP 使用场景:

Authentication 权限
Caching 缓存
Context passing 内容传递
Error handling 错误处理
Lazy loading 懒加载
Debugging 调试
logging tracing profiling and monitoring 记录跟踪 优化 校准
Performance optimization 性能持久化
Persistence 持久化
Resource pooling 资源池
Synchronization 同步
Transactions 事务

下面是Spring-AOP 术语

通知 (Advice)

在上文我们将横切关注点集中起来管理,它不再散落在程序的各个地方,而是被模块化,称之为切面。那么定义横切关注点在何时工作(这并不完全准确,不仅是何时工作,也包括具体的工作是什么),在某个的调用前还是调用后还是抛出异常时?定义在何时工作以及工作内容称之为通知,Spring中的切面一共提供5种通知的类型:

  前置通知(Before)

  后置通知(After)

  返回通知(After-Running)

  异常通知(After-throwing)

  环绕通知(Around)

  前面4个较为容易理解,例如“前置通知”,我们通常在一个方法的第一句打印出传入的方法参数,此时就可以使用前置通知在方法调用前打印出传入的参数。对于“后置通知”实际是“返回通知”和“异常通知”的并集,返回通知表示程序正确运行返回后执行,异常通知表示程序不正常运行抛出异常时执行,而后置通知则不论程序是否正确运行,一旦离开方法就会执行。

  环绕通知最为强大,它包裹了被通知的方法,可同时定义前置通知和后置通知。

切点(Pointcut)

通知定义了何时工作以及工作内容,切点则定义了在何处工作,也就是在哪个方法应用通知。要表达出在哪个方法中运用通知,这需要用到切点表达式。Spring AOP借助AspectJ(另一种AOP实现)的切点表达式来确定通知被应用的位置,虽然是借助但并不支持所有AspectJ的所有切点指示器而仅仅是其一个子集,这其中最为常用的就是execution切点指示器,表示执行。例如:

execution(* com.deo.springaop.Test.test(..))

上面介绍了AOP中最为基本的两个术语,通知和切点。简单总结下,横切关注点集中在了一个地方被模块化称之为切面,通知和切点构成了切面的所有内容——它是什么,在何时和何处完成其功能

例如我上一篇文章中的描述:JAVA基础-Annotation_阿涩的博客-CSDN博客

Spring Aop 初级- 概念及作用相关推荐

  1. Spring——AOP基本概念的理解

    文章目录: 1.引子 2.AOP的概念 2.1 什么是AOP? 2.2 AOP的作用 2.3 AOP中的编程术语 2.4 AOP技术思想的实现 3.使用AspectJ框架实现AOP的基本知识 3.1  ...

  2. Spring AOP 基本概念

    AOP的概念 AOP(Aspect-Oriented Programming) 即面向切面编程,它与 OOP(Object-Oriented Programming,面向对象编程)相辅相成,提供了与 ...

  3. spring Aop的概念

    aspect:一定要给spring去管理 抽象 aspectj->类 pointcut:切点表示连接点的集合 -------------------> 表 (我的理解:PointCut是J ...

  4. Spring AOP 概念及动态代理模式

    Spring AOP 概念及动态代理模式 文章目录 Spring AOP 概念及动态代理模式 1 AOP 的概念及相关术语 2 AOP 作用 3 AOP 原理概述 3.1 JDK 动态代理(Proxy ...

  5. Spring AOP(一) AOP基本概念

    Spring AOP 基本概念 术语 容易理解 举个栗子给大家讲一下代理: 什么是AOP? 基本术语 (1)切面(Aspect) (2) 目标对象(Target) (3) 连接点(JoinPoint) ...

  6. Spring AOP之HelloWorld与概念介绍(xml版)

    Spring AOP之HelloWorld与概念介绍 什么是AOP Spring AOP代码实现 Spring AOP 基本概念介绍 目标类 连接点 切入点 切面 切面类 通知 通知类别 织入 什么是 ...

  7. 利用spring aop统一处理异常和打日志

    利用spring aop统一处理异常和打日志 spring aop的概念,很早就写博客介绍了,现在在工作中真正使用. 我们很容易写出的代码 我们很容易写出带有很多try catch 和 logger. ...

  8. Spring AOP注解方式实现

    简介 上文已经提到了Spring AOP的概念以及简单的静态代理.动态代理简单示例,链接地址:https://www.cnblogs.com/chenzhaoren/p/9959596.html 本文 ...

  9. Spring AOP里面的几个名词的概念:

    (1)连接点(Join point):指程序运行过程中所执行的方法.在Spring AOP中,一个连接点总代表一个方法的执行. (2)切面(Aspect):被抽取出来的公共模块,可以用来会横切多个对象 ...

最新文章

  1. java检索字符串并提取_eclipse 项目中搜索资源(类方法,文件名,文件中的字符串)...
  2. js调用python脚本_javascript – 如何从NodeJs调用python脚本
  3. android webview腾讯,Android webview无法播放腾讯视频问题
  4. AngularJS(1)——入门学习
  5. 动手造轮子:实现一个简单的基于 Console 的日志输出
  6. (转载)做好一个系统分析师、项目经理75条准则(一)
  7. PHP ICO/STO Token销售管理面板/ICO管理程序开心版
  8. python 工程结构加固_[原创]某企业级加固[四代壳]VMP解释执行+指令还原
  9. ArcGIS制图表达Representation实战篇1-边界线和行道树制作
  10. Mat拜耳数据邻域转换算法返回Mat对象,16bit三通道
  11. 一文讲清神经网络、BP神经网络、深度学习的关系
  12. MacOS上MPV播放器常用快捷键(增加画面旋转快捷键)
  13. 惠普打印机故障代码_惠普打印机出现故障怎么办
  14. 程序员有文化,多可怕!
  15. 抖音短视频抖音搜索seo排名优化技术引流工具源代码开发
  16. 【工具】多人在线协同编辑文档软件
  17. 谢霆锋断言暂不再婚 赞张柏芝教子有方
  18. 【转载】在美国找工作秘籍
  19. 申请德国农工大学计算机案例,德州农工大学本科案例
  20. 程序计数器(PC ) 详解

热门文章

  1. 迪杰斯特拉、弗洛伊德算法
  2. java实现简单电话本
  3. 诺信EFD的全新自动光学检测技术可验证胶点的位置和精确度
  4. 非计算机系可以学习Python嘛,有什么建议?
  5. win7驱动人生_插入U盘没反应不显示盘符?驱动人生一键解决。
  6. 番茄工作法之啊哈的感想
  7. 光猫改桥接之后连接路由器上网的设备不能访问光猫的解决方法
  8. JavaScript与Java的姐妹情缘
  9. elementui <el-autocomplete> querySearchAsync 搜索手机号码,补全信息
  10. 求圆面积用PHP编程语言,c语言如何计算圆面积和周长