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的切点表达式,我们能动态地定位切点,渗透进我们项目的每一个类、方法中。


目录
相关文章
|
2月前
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
89 18
|
4月前
|
Java Kotlin 索引
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
57 0
|
4月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
101 9
|
5月前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
56 9
|
5月前
|
XML Java 数据格式
Spring学习
【10月更文挑战第6天】Spring学习
39 1
|
5月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
173 2
|
5月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
537 1
|
5月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
222 0
|
5月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
66 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
5月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
74 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现