无论是 Spring 还是其他支持 AOP(Aspect Oriented Programming)的框架,尤其是 Spring 这种基于 Java(彻底的面向对象)的语言,在实现 AOP 时,首先为 AOP 这一编程思想,定义一些基本概念,基本术语,基本流程。

1. AOP 术语

  • Advice:通知。用于修饰某个方法(代表业务),切面是独立于业务的的。AOP 就是尽可能降低目标方法和切面的耦合关系。

    • 切面的目标 —— 必须要完成的工作。切面的工作就被称为通知;
    • 通知定义了什么是切面(what),也即切面的工作(职责所在),还描述了何时(when)执行这个工作,

      时序上,Spring 切面支持如下 5 种类型的通知:

      • 前置(型)通知(Before),在目标方法被调用之前调用通知功能;
      • 后置(型)通知(After),在目标方法完成之后(不保证成功还是抛异常)调用通知,此时不会关心方法的输出是什么?
      • 返回(型)通知(After-returning),在目标方法成功执行之后调用通知;
      • 异常(型)通知(After-throwing),在目标方法抛出异常之后调用通知;
      • 环绕(型)通知(Around),通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为;
  • 连接点(Join point):连接点是在应用执行过程中,能够插入切面的一个点。
    • 这个点可以是在调用方法时,抛出异常时,甚至修改一个字段时;
    • 切面代码可以利用这些点插入到应用的正常流程中,并添加新的行为;
  • Pointcut(切点),通知定义了切面的“什么”(what)和“何时”(when)的话,那么切点就定义了位置(where,何处)
    • 切点(切入点),其定义会去匹配所要织入(weaving)的一个或多个连接点,
  • 切面(Aspect):通知和切点共同定义了切面的全部内容;
    • 它是什么,在何时何处完成其功能;

2. Spring 对 AOP 的支持

并非所有的 AOP 框架都是相同的,它们在连接点模型(Join Point Model)上可能有强弱(程度)之分。有些允许在字段修饰符级别应用通知,而另一些只支持与方法调用相关的连接点。它们被织入(weaving)切面的方式和时机(timing)也有所不同。但是无论如何不同和变化,在实现方式上,创建切点(poincut)来定义切面所织入的连接点是 AOP 框架的基本功能。

AOP 基本术语及其在 Spring 中的实现相关推荐

  1. java day59【 AOP 的相关概念[理解] 、 Spring 中的 AOP[掌握] 、 Spring 整合 Junit[掌握] 】...

    第1章 AOP 的相关概念[理解] 1.1AOP 概述 1.1.1 什么是 AOP 1.1.2 AOP 的作用及优势 1.1.3 AOP 的实现方式 1.2AOP 的具体应用 1.2.1 案例中问题 ...

  2. Spring中AOP开发步骤

    AOP:不是由Spring定义.AOP联盟的组织定义.Spring中的通知:(增强代码)前置通知 org.springframework.aop.MethodBeforeAdvice* 在目标方法执行 ...

  3. Spring中的AOP(8)

    Spring的传统AOP AOP:不是由Spring定义.AOP联盟的组织定义. Spring中的通知:(增强代码) 前置通知 org.springframework.aop.MethodBefore ...

  4. JDBC在spring中的使用

    1.spring中的JDBCtmplate JDBCtmplate的作用: 它就是用于和数据库交互,实现对表的CRUD操作 如何创建该对象 对象中常用的方法 2.spring基于aop的事务控制 3. ...

  5. 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事

    AOP 概述 什么是 AOP       AOP:全称是 Aspect Oriented Programming 即:面向切面编程 AOP 的作用及优势 作用: 在程序运行期间,不修改源码对已有方法进 ...

  6. spring中的aop术语和细节

    Spring中AOP的细节 说明 我们学习spring的aop,就是通过配置的方式 AOP相关术语 Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法, ...

  7. Spring(四)——AOP、Spring实现AOP、Spring整合Mybatis、Spring中的事务管理

    文章目录 1. 什么是AOP 2. 使用Spring实现AOP 2.1 使用Spring的API 接口实现 2.2 自定义实现 2.3 使用注解实现 3. 整合MyBatis 3.1 MyBatis- ...

  8. Spring AOP相关术语解释及简单使用

    什么是面向切面编程 百度百科定义为:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. ...

  9. Spring代理模式及AOP基本术语

    一.代理模式: 静态代理.动态代理 动态代理和静态代理区别?? 解析:静态代理需要手工编写代理类,代理类引用被代理对象. 动态代理是在内存中构建的,不需要手动编写代理类 代理的目的:是为了在原有的方法 ...

最新文章

  1. 一文详述Attention最新进展
  2. kubernetes 清理日志命令_Kubernetes之容器数据写满磁盘解决方法
  3. 线性八叉树_基于三维点云数据的线性八叉树编码压缩算法(权毓舒, 何明一,).pdf...
  4. 优化器,SGD+Momentum;Adagrad;RMSProp;Adam
  5. 地址解析协议 (ARP) 是什么
  6. 深入理解C++中的RVO
  7. angularJS限制 input-text 只能输入数字
  8. mysql java 问题_【Java】连接MySQL问题总结
  9. 从零开始--系统深入学习android(实践-让我们开始写代码-新手指南-3.Hello,本地化)...
  10. php redis list 长度限制,(PHP)redis List(列表)操作
  11. slf4j+log4j在Java中实现日志记录
  12. Ubuntu 9.04下安装飞信LibFetion V1.1版
  13. linux 词霸,Linux下类似金山词霸的翻译软件
  14. rabbitmq高并发RPC调用,你Get到了吗?
  15. ImageMagick将多张图片拼接成一张图片_word转存技巧:如何将每页文档转换为图片保存?...
  16. 0xc000007b 问题总结
  17. buuoj BJDCTF-2nd WP
  18. 读取注册表REG_DWORD类型的键值
  19. ManageEngine 详解IT服务管理(ITSM)流程五阶段
  20. linux 设置时区 东一区,关于时区的划分

热门文章

  1. Visual C# .Net 环境中编程实现浮动工具栏
  2. 计算机网络章末总结,计算机网络 (前两章总结)
  3. 电脑版永恒纪元服务器正在维护,永恒纪元————【维护】1月10日更新维护公告...
  4. 力扣-图解算法数据结构-剑指 Offer 05. 替换空格
  5. Git 简介和命令行操作
  6. vue list数组合并和插入数据
  7. 计算机应用技术参加文献,面向科技文献的机器翻译(4)-计算机应用技术专业毕业论文.docx...
  8. python判断性别程序设计_python基础15 ---面像对象的程序设计
  9. 剑指offer面试题39. 数组中出现次数超过一半的数字(数组)(摩尔投票法)
  10. Sublime配置java运行环境