Spring 3.0 AOP (一)AOP 术语
关于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 术语的更多相关文章
- Spring 3.0 AOP 之 AOP 术语 (一)
关于AOP.之前我已写过一个系列的随笔: <自己实现简单的AOP>,它的关注点在于实现.实现语言是C#,实现方式为 自定义实现 RealProxy 抽象类.重写Invoke方法,以便进行方 ...
- ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理
方法1 <object id="ServiceOperation" type="Spring.Aop.Support.SdkRegularExpressionMet ...
- Spring入门(9)-AOP初探
Spring入门(9)-AOP初探 0. 目录 什么是面向切面编程 AOP常见术语 AOP实例 参考资料 1. 什么是面向切面编程 Aspect Oriented Programming(AOP),即 ...
- Spring学习笔记IOC与AOP实例
Spring框架核心由两部分组成: 第一部分是反向控制(IOC),也叫依赖注入(DI); 控制反转(依赖注入)的主要内容是指:只描述程序中对象的被创建方式但不显示的创建对象.在以XML语言描述的配置文 ...
- spring 纯注解方式 与AOP
spring注解方式 以前我也使用过纯注解方式.现在在这里做个记录 我们先认识几个我们都耳熟能详的注解 @configuration :从spring3.0这个注解就可以用于定义配置类,可以替换xml ...
- java框架之Spring(2)-注解配置IOC&AOP配置
注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...
- Spring的入门学习笔记 (AOP概念及操作+AspectJ)
AOP概念 1.aop:面向切面(方面)编程,扩展功能不通过源代码实现 2.采用横向抽取机制,取代了传统的纵向继承重复代码 AOP原理 假设现有 public class User{ //添加用户方法 ...
- Spring 学习(三)AOP
(1)AOP概述 - AOP:面向切面编程,扩展功能不修改源代码实现 - AOP采取横向抽取机制,取代了传统的纵向继承体系重复性代码 (2)AOP底层原理 原始方法------->纵向继承体系 ...
- 深入学习Spring框架(三)- AOP面向切面
1.什么是AOP? AOP为 Aspect Oriented Programming 的缩写,即面向切面编程, 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术..AOP是OOP的延续, ...
随机推荐
- 网站压力负载测试工具:Web版已逝,只好送大伙单机版
前言: 最近老板资金周转出了点问题,工资好久没发了,于是暂闲置在家,静待老板弄到钱东山再起的消息: QQ群里,偶尔不时的会有人问,原来的分布式网站负载工具怎么下载不了啦?或者不能用啦?之类的问题. 我 ...
- 浅谈Android应用保护(零):出发点和背景
近几年来,无线平台特别是Android平台的安全逐渐成为各厂商关注的重点.各种新的思路和玩法层出不穷.所以,笔者基于前一段时间的学习和整理,写了这系列关于Android应用安全和保护的文章. 这5篇文 ...
- 《深入理解Java虚拟机》Java内存区域与内存溢出异常
注:“蓝色加粗字体”为书本原语 先来一张JVM运行时数据区域图,再接下来一一分析各区域功能: 程序计数器 程序计数器(program Counter Register)是一块较小的内存空间,它可以 ...
- CI-持续集成(1)-软件工业“流水线”概述
CI-持续集成(1)-软件工业“流水线”概述 1 概述 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次, ...
- 细说 Data URI
Data URL 早在 1995 年就被提出,那个时候有很多个版本的 Data URL Schema 定义陆续出现在 VRML 之中,随后不久,其中的一个版本被提上了议案——将它做个一个嵌入式的资源放 ...
- 日志系统实战(二)-AOP动态获取运行时数据
介绍 这篇距上一篇已经拖3个月之久了,批评自己下. 通过上篇介绍了解如何利用mono反射代码,可以拿出编译好的静态数据.例如方法参数信息之类的. 但实际情况是往往需要的是运行时的数据,就是用户输入等外 ...
- Maven和Gradle对比
Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山,而Gradle的发展则如日中天.笔者有幸见证了Maven的没落和Gradl ...
- SSH实战 · JAVA发送邮件相关
发送激活邮件 电子邮箱:邮件服务器上的一块空间: 邮件服务器:类比于web服务器(tomcat),有相应的服务器软件: 邮件协议:大公司发送和接收服务器分开,也可以都用一个服务器. ...
- 在SqlServer2008R2中,在一张表上加上insert、update、delete触发器(带游标)
在日常工作中,在SqlServer2008R2中,需要向一张表上加上触发器,监控插入.更新.删除. --一个触发器内三种INSERT,UPDATE,DELETE状态 IF exists(select ...
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...