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

简介: <div class="markdown_views"><p>通过上一篇文章对AOP的一些实例讲解后,我们在这篇文章中结合一些例子来系统地了解AOP中涉及到的一些基本概念。</p><h2 id="1-增强">1. 增强</h2><p>上一篇文章我们都在讲增强,但并未谈及它的概念,但通过很多实例分析,我们很容易理解,增强就是为程序执行过程的很多特定地方添加一些新的功

通过上一篇文章对AOP的一些实例讲解后,我们在这篇文章中结合一些例子来系统地了解AOP中涉及到的一些基本概念。

1. 增强

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

2. 连接点

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

3. 切点

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

4. 织入

正如它的名字一样,也对应于我们前面介绍增强、切点等概念中提到的,相当于以切点为原点,开始编织一张“增强网”,使这个切点具有增强的特性。,AOP有三种织入方式
1. 编译器织入:通过使用特殊的Java类编译器
2. 类装载期织入:通过特殊的类加载器
3. 动态代理织入:通过运行期为目标类添加增强生成子类的方式

5. 代理

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

6. 切面

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


面向切面编程的核心在于切面设计,即良好的切点定位和增强配置。通过AspectJ的切点表达式,我们能动态地定位切点,渗透进我们项目的每一个类、方法中。


目录
相关文章
|
1月前
|
监控 Java 开发者
Spring AOP动态代理
Spring AOP动态代理
40 1
|
1月前
|
Java Spring 容器
Spring的AOP失效场景详解
Spring的AOP失效场景详解
81 0
|
2月前
|
XML Java 编译器
Spring AOP初步理解及使用
Spring AOP初步理解及使用
49 0
|
2月前
|
Java Spring
[Spring]aop的配置与使用
[Spring]aop的配置与使用
40 0
[Spring]aop的配置与使用
|
21天前
|
设计模式 Java Maven
Spring Aop 底层责任链思路实现-springaopdi-ceng-ze-ren-lian-si-lu-shi-xian
Spring Aop 底层责任链思路实现-springaopdi-ceng-ze-ren-lian-si-lu-shi-xian
31 1
|
2月前
|
XML Java 数据格式
5个点轻松搞定Spring AOP底层实现原理
AOP 也是 Spring 中一个较为重要的内容,相对于传统的 OOP 模式,AOP 有很多让人难以理解的地方,本篇文章将向大家介绍 AOP 的实现方法及其底层实现,内容包括:
44 1
|
14天前
|
XML Java Maven
Spring之Aop的注解使用
Spring之Aop的注解使用
|
20天前
|
Java Spring
Spring 如何实现 AOP
Spring 如何实现 AOP
17 0
|
29天前
|
Java 编译器 程序员
Spring AOP 和 AspectJ 的比较
Spring AOP 和 AspectJ 的比较
34 0
|
1月前
|
Java Spring
【spring(三)】AOP总结
【spring(三)】AOP总结