关于AOP、之前我已写过一个系列的随笔: 《自己实现简单的AOP》,它的关注点在于实现、实现语言是C#,实现方式为 自定义实现 RealProxy 抽象类、重写Invoke方法,以便进行方法调用的拦截、借此实现AOP。感兴趣的园友可以去瞅瞅。

  今天、我们来看一下Spring中的AOP,本随笔着重关注AOP术语。

  先说一句废话:如果你对AOP不是很熟悉、第一次看到这些术语可能会有点迷惑,不过没有关系、坚持继续向下看,然后再反过来看一遍,有些东西就能恍然大悟了。

连接点(Joinpoint)

  连接点:连接点、点,它是一个位置、是指程序执行的特定位置,如:类初始化前、类初始化后、某个方法执行前、某个方法执行后、方法抛出异常之后 等等位置。而,Spring仅支持 方法的连接点, 即仅可以在方法执行前、方法执行后、方法抛出异常时 及  方法执行前后 4 类连接点。

  我们都知道黑客攻击系统都需要找到突破口,如果没有突破口就没法进行攻击。在某种程度上来说、AOP有点像黑客(因为它要向程序中织入代码逻辑),而连接点就是这个突破口。

  连接点需要由两点信息来确定:一个是 方法 。第二个是 相对于方法的执行方位(比如:方法执行“前”、方法执行“后”、方法执行“前后”、方法抛出异常“时”)。【执行方位  存在于 增强中】

切点(Pointcut)

  我(本随笔作者)对切点的理解为,切点:查找连接点的条件,更确切一点是查找连接点所表示的方法的条件。

增强(Advice)

  增强:即一段代码,是想要织入的代码逻辑。 并且还附带了  相对于方法的执行方位。

  因此:切点 + 增强中的  相对于方法的执行方位  = 连接点。

目标对象(Target)

   是需要织入增强的目标类。

引介(Introduction)

  引介:引介是一种特殊的增强:它可以为目标类增加属性和方法,以此、可以实现新接口。

织入(Weaving)

  织入:织入是将增强添加到目标类具体连接点上的过程,AOP就像一台织布机,将目标类、增强或引介通过AOP这台织布机天衣无缝地编织在一起。

代理(Proxy)

  一个类被AOP织入增强后,就产生了一个结果类,这个结果类就是代理。它融合了原类和增强逻辑。代理类 和 原类 拥有相同的接口,所以可以像原类一样调用代理类。

切面(Aspect)

  切面由 切点 和 增强(或引介)组成,它既包括了横切逻辑、也包含了连接点的定义,Spring AOP 就是负责实施切面的框架,它将切面所定义的横切逻辑织入切面中所指定的连接点上。

  AOP 的工作重心在于如何将增强应用于目标对象的连接点上。这里包含两个工作:

  1、如何通过切点 和 增强 定位连接点。

  2、如何在增强中编写横切逻辑代码。

  本系列随笔将重点围绕破以上两点来展开进行。

  声明:《Spring 3.0 AOP》 系列随笔为《Spring 3.0 就是这么简单》读书笔记、并附加作者自己的认知。

  (未完待续...)

Spring 3.0 AOP 之 AOP 术语 (一)的更多相关文章

  1. Spring 3.0 AOP (一)AOP 术语

    关于AOP.之前我已写过一个系列的随笔: <自己实现简单的AOP>,它的关注点在于实现.实现语言是C#,实现方式为 自定义实现 RealProxy 抽象类.重写Invoke方法,以便进行方 ...

  2. ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理

    方法1 <object id="ServiceOperation" type="Spring.Aop.Support.SdkRegularExpressionMet ...

  3. Spring入门(9)-AOP初探

    Spring入门(9)-AOP初探 0. 目录 什么是面向切面编程 AOP常见术语 AOP实例 参考资料 1. 什么是面向切面编程 Aspect Oriented Programming(AOP),即 ...

  4. Spring学习笔记IOC与AOP实例

    Spring框架核心由两部分组成: 第一部分是反向控制(IOC),也叫依赖注入(DI); 控制反转(依赖注入)的主要内容是指:只描述程序中对象的被创建方式但不显示的创建对象.在以XML语言描述的配置文 ...

  5. spring 纯注解方式 与AOP

    spring注解方式 以前我也使用过纯注解方式.现在在这里做个记录 我们先认识几个我们都耳熟能详的注解 @configuration :从spring3.0这个注解就可以用于定义配置类,可以替换xml ...

  6. java框架之Spring(2)-注解配置IOC&AOP配置

    注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...

  7. Spring的入门学习笔记 (AOP概念及操作+AspectJ)

    AOP概念 1.aop:面向切面(方面)编程,扩展功能不通过源代码实现 2.采用横向抽取机制,取代了传统的纵向继承重复代码 AOP原理 假设现有 public class User{ //添加用户方法 ...

  8. Spring 学习(三)AOP

    (1)AOP概述 - AOP:面向切面编程,扩展功能不修改源代码实现 - AOP采取横向抽取机制,取代了传统的纵向继承体系重复性代码 (2)AOP底层原理 原始方法------->纵向继承体系 ...

  9. 深入学习Spring框架(三)- AOP面向切面

    1.什么是AOP? AOP为 Aspect Oriented Programming 的缩写,即面向切面编程, 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术..AOP是OOP的延续, ...

随机推荐

  1. Python3 简单验证码识别思路及实例

    1.介绍 在爬虫中经常会遇到验证码识别的问题,现在的验证码大多分计算验证码.滑块验证码.识图验证码.语音验证码等四种.本文就是识图验证码,识别的是简单的验证码,要想让识别率更高, 识别的更加准确就需要 ...

  2. MFC如何获取硬盘的序列号

    要把如下的两篇文章结合起来看: qt怎么获取硬盘序列号,是不是没戏? http://www.qtcn.org/bbs/simple/?t65637.html system("wmic pat ...

  3. discuz上传头像失败怎么解决

    刚安装好的discuz程序,可能需要我们做许多修改,而头像上传失败则是最为常见的问题之一,那么discuz上传头像失败怎么解决呢 进入ftp,打开跟目录下config文件 下载"config ...

  4. windows server 2012 st 版本的php环境问题修复 与删除

    windows server 2012 st 版本的php环境问题修复 错误内容 HTTP 错误 500.0 - Internal Server Error C:\Program Files\iis ...

  5. 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别

    这是一篇国外的文章,介绍如何通过 WebRTC.OpenCV 和 WebSocket 技术实现在 Web 浏览器上的人脸识别,架构在 Jetty 之上. 实现的效果包括: 还能识别眼睛 人脸识别的核心 ...

  6. linux下更改主机名方法hostname

    一.永久修改修改/etc/sysconfig/network,在里面指定主机名称HOSTNAME=然后执行命令hostname 主机名这个时候可以注销一下系统,再重登录之后就行了. 或者修改/etc/ ...

  7. window系统使用tftp下载和上传文件

    安装tftp32服务器 首先需要安装tftp服务器:tftpd32 , 下载以后的目录如下: tftp使用帮助 命令提示符(cmd): 直接运行tftpd32.exe tftp命令的用法: 关于tft ...

  8. iOS应用程序状态图

    理解应用的状态对于我们开发iOS大有裨益. 当前应用所处什么状态,什么促使它在各个状态间进行过渡,你的代码又是如何 唤醒这些过渡,等等等等. 先请看下图: 1. 当应用出于非运行状态时,它处于图中的& ...

  9. 自定义控件之万能Repeater源码

    using System.ComponentModel; using System.Web.UI; [assembly: TagPrefix("Jinlong.Control", ...

  10. Android Studio 之 Launch AVD 时" Intel HAXM is required to run this AVD, VT-x is disabled in BIOS; "

    问题描述:Launch AVD 时弹窗信息" Intel HAXM is required to run this AVD, VT-x is disabled in BIOS; " ...