您的位置:首页 > 编程语言 > Java开发

spring学习笔记(9)AOP基本概念

2016-03-21 01:12 429 查看
通过上一篇文章对AOP的一些实例讲解后,我们在这篇文章中结合一些例子来系统地了解AOP中涉及到的一些基本概念。

1. 增强

上一篇文章我们都在讲增强,但并未谈及它的概念,但通过很多实例分析,我们很容易理解,增强就是为程序执行过程的很多特定地方添加一些新的功能。

2. 连接点

程序执行过程的某个特定位置点,如增强嵌入(织入)处的方法调用前,调用后、抛出异常后等程序执行点,乃至类初始化前后、类销毁前后等,都能称为连接点,它们都带有一定的边界特性。

3. 切点

切点可以理解成“带有目的性”的连接点,当我们带着特定目的,意图在某个连接点织入增强时,这些连接点就成为了切点,它具有“方位”性质,对应于我们的“目的”所在地,比如我们要去吃饭,我们可能要通过gps找周围的饭店,饭店在地图上显示的位置就是一个方位。抽象体现为特定类下特定方法执行前后,异常抛出点等等。

4. 织入

正如它的名字一样,也对应于我们前面介绍增强、切点等概念中提到的,相当于以切点为原点,开始编织一张“增强网”,使这个切点具有增强的特性。,AOP有三种织入方式

1. 编译器织入:通过使用特殊的Java类编译器

2. 类装载期织入:通过特殊的类加载器

3. 动态代理织入:通过运行期为目标类添加增强生成子类的方式

5. 代理

如我们上一篇文章提到的ProxyFactoryBean,它是一个代理类的生成工厂,通过它生成的代理类融合了原类(Target)和增强(myBeforeAdvice,myAfterReturningAdvice等)的特性。

6. 切面

我们把增强覆盖在所有具有方位信息的连接点(切点)就形成了我们强大的切面,这恰是我们的AOP(面向切面编程)的核心概念所在。比如我们在使用mybatis时要为所有名为xxxxMap的DAO层中的类(切入点)添加日志记录(增强),这就形成了一个切面。

面向切面编程的核心在于切面设计,即良好的切点定位和增强配置。通过AspectJ的切点表达式,我们能动态地定位切点,渗透进我们项目的每一个类、方法中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: