无论是 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. 学习spring中遇见的问题

    报错: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nes ...

  2. 阶段3 2.Spring_08.面向切面编程 AOP_2 spring中的aop术语和细节

    基于接口的动态代理要求,要去被代理对象最少实现一个接口 基于子类的动态代理没有实现接口的要求.但是要求我们的被代理类不能是最终类 在Spring中可以选择基于接口还是子类的动态代理 术语 大白话.业务 ...

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

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

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

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

  5. Spring学习(二)——Spring中的AOP的初步理解[转]

      [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...

  6. Spring中的AOP

    什么是AOP? (以下内容来自百度百科) 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...

  7. 浅谈spring中AOP以及spring中AOP的注解方式

    AOP(Aspect Oriented Programming):AOP的专业术语是"面向切面编程" 什么是面向切面编程,我的理解就是:在不修改源代码的情况下增强功能.好了,下面在 ...

  8. Spring AOP相关术语

    ---------------------siwuxie095                                 Spring AOP 相关术语         (1)Joinpoint ...

  9. Spring学习(二)——Spring中的AOP的初步理解

    [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...

随机推荐

  1. iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)

    百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 百度地图集成 1.引入相关包

  2. devstack脚本安装Openstack总结(转载)

    1:vmware 基本设置 我采用的vmware workstation 8.0的版本,其他版本应该都是没问题.我是把虚拟机放在NAT的网络. 虚拟机就单块网卡就可以. 如果你希望可以在dashboa ...

  3. POJ 2375 Cow Ski Area【tarjan】

    题目大意:一个W*L的山,每个山有个高度,当且仅当一个山不比它相邻(有公共边的格子)的山矮时能够滑过去,现在可以装化学电梯来无视山的高度滑雪,问最少装多少电梯使得任意两点都可到达 思路:最后一句话已经 ...

  4. Linux(5):正则表达式 & 权限

    正则表达式: 特殊符号: '' ---> 所见即所得,里面的内容都会被原封不动的输出出来 "" ---> 与单引号类似,但其中的特殊符号会被解析运行 `` ---> ...

  5. asp.net 引发类型为“System.OutOfMemoryException”的异常

    asp.net 引发类型为“System.OutOfMemoryException”的异常通常发生在IIS进程获取不到内存时. 临时解决方法是: 回收IIS的应用程序池. 如果要比较好的解决办法是: ...

  6. 【NOIP模拟】数字对(RMQ,二分)

    题意:小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R <= n). 这个特 ...

  7. [JSP]自定义EL函数以及使用

    有时候在JSP页面需要进行一连串的字符串的处理,需要进行自定义EL函数. 先看EL函数的tld文件: standard.jar下面: 自定义EL函数: 1.编写EL函数(全是public static ...

  8. Xcode waring: no rule to process file *** 警告提示

    在编译程序的时候,Xcode给出了警告:warning: no rule to process file *** 类似的警告, 解决方法: 在[build Phases] -> [Compile ...

  9. eclipse提速03 - 禁用动画

  10. hdoj 1203 I NEED A OFFER! 【另类01背包】【概率背包】

    题意:... 策略:动态规划. 由于是求至少能得到一个offer的概率,那我们能够反着求.求得不到一个offer的概率.最后用1减去就好了. 代码: #include<string.h> ...