抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文学习了Spring面向切面的相关概念。

环境

Windows 10 企业版 LTSC 21H2
Java 1.8
Tomcat 8.5.50
Maven 3.6.3
Spring 5.2.25.RELEASE

1 简介

1.1 定义

面向切面编程(Aspect Oriented Programming,AOP)是Spring框架的重要特性之一,它允许开发者将横切关注点从业务逻辑中分离出来。

横切关注点是指那些在多个业务模块中都需要使用的功能,如日志记录、事务管理、安全检查等。

AOP通过预编译方式和运行期动态代理实现程序功能的统一维护,是一种新的编程范式,它弥补了面向对象编程(OOP)的不足。

1.2 核心思想

AOP的核心思想是将业务逻辑与系统服务(如日志、事务、安全等)分离,通过切面(Aspect)将这些系统服务模块化,从而提高代码的模块化程度和可维护性。

2 基本概念

2.1 切面

切面(Aspect)是横切关注点的模块化实现,通常包含通知和切点的定义。切面可以是普通的类,使用@Aspect注解标记。

2.2 连接点

连接点(Join Point)是程序执行过程中能够插入切面的特定点,如方法调用、异常抛出、字段访问等。在Spring中,连接点总是方法的执行。

2.3 切点

切点(Pointcut)是一个表达式,用于匹配连接点,定义了在哪些连接点上应用通知。

2.4 通知

通知(Advice)是切面在特定连接点上执行的动作。Spring支持以下几种类型的通知:

  • 前置通知(Before):在目标方法执行前执行。
  • 后置通知(After):在目标方法执行后执行(无论是否发生异常)。
  • 返回通知(After-returning):在目标方法成功执行后执行。
  • 异常通知(After-throwing):在目标方法抛出异常时执行。
  • 环绕通知(Around):包围目标方法执行,在方法执行前后都可以执行自定义逻辑。

2.5 引入

引入(Introduction)允许向现有的类添加新的方法或属性,可以在不修改原类的情况下添加新功能。

2.6 目标对象

目标对象(Target Object)是被一个或多个切面通知的对象,也称为被通知对象。由于Spring使用运行时代理实现,这个对象永远是一个被代理的对象。

2.7 织入

织入(Weaving)是将切面应用到目标对象以创建新代理对象的过程。织入可以在编译时、类加载时或运行时完成。Spring在运行时完成织入。

评论