首页 > 教程 > 理解Spring AOP的XML配置

理解Spring AOP的XML配置

时间:2024-05-13 | 来源: | 阅读:191

话题: 角度 Ri S in 配置

本文是全面解析面向切面编程的实践指南。通过深入讲解切面、连接点、通知等关键概念,以及通过XML配置实现Spring AOP的步骤。

本文分享自华为云社区《Spring高手之路18——从XML配置角度理解Spring AOP》,作者: 砖业洋__。

Spring AOP使用动态代理作为其主要机制来实现面向切面的编程。这种机制允许Spring在运行时动态地创建代理对象,这些代理对象包装了目标对象(即业务组件),以便在调用目标对象的方法前后插入额外的行为(如安全检查、事务管理、日志记录等)。

1. Spring AOP与动态代理

1.1 Spring AOP和动态代理的关系

Spring AOP 使用动态代理作为其主要机制来实现面向切面的编程。这种机制允许 Spring 在运行时动态地创建代理对象,这些代理对象包装了目标对象(即业务组件),以便在调用目标对象的方法前后插入额外的行为(如安全检查、事务管理、日志记录等)。

  • JDK动态代理:当目标对象实现了一个或多个接口时, Spring AOP 默认使用 JDK 的动态代理。 JDK 动态代理通过反射机制,为接口创建一个代理对象,这个代理对象会拦截对目标接口方法的所有调用。

  • CGLIB代理:如果目标对象没有实现任何接口, Spring AOP 会退回到使用 CGLIB 库生成目标类的子类。 CGLIB Code Generation Library )是一个强大的高性能代码生成库,它在运行时扩展了 Java 类,并在子类中覆盖了方法来实现方法拦截。

无论使用哪种代理方式,目的都是在不改变原有业务逻辑代码的基础上,通过切面定义的通知在方法执行的不同阶段插入附加行为。

1.2 AOP基本术语

切面(Aspect):切面是面向切面编程的核心,它是将横跨多个类的关注点(如日志记录、事务管理等)模块化的构造。一个切面可以包含多种类型的通知( Advice )和一个或多个切点( Pointcut ),用于定义在何处以及何时执行这些通知。

连接点(Join Point):连接点代表程序执行过程中的某个特定位置, Spring AOP 限定这些位置为方法的调用。简而言之,连接点就是能够插入切面通知的点。

通知(Advice):通知定义了切面在连接点上要执行的动作。根据通知类型的不同,这些动作可以在方法调用之前、之后、返回结果后或抛出异常时执行。

  • 前置通知( Before advice ):在方法执行之前执行。
  • 后置通知( After advice ):在方法执行后执行,无论其结果如何。
  • 返回后通知( After-returning advice ):在方法成功执行之后执行。
  • 异常后通知( After-throwing advice ):在方法抛出异常后执行。
  • 环绕通知( Around advice ):在方法执行之前和之后执行,提供对方法调用的全面控制。

切点(Pointcut):切点是一个表达式,切点表达式允许通过方法名称、访问修饰符等条件来匹配连接点,决定了通知应该在哪些方法执行时触发。

目标对象(Target Object):被一个或多个切面所通知的对象。也被称为被代理对象。

AOP代理(AOP Proxy): AOP 框架创建的对象,用于实现切面契约(由通知和切点定义)。在 Spring AOP 中, AOP 代理可以是 JDK 动态代理或 CGLIB 代理。

引入(Introduction):引入允许向现有的类添加新的方法或属性。这是通过定义一个或多个附加接口( Introduction interfaces )实现的, AOP 框架会为目标对象创建一个代理,该代理实现这些接口。

如果还是觉得抽象,我们再举一个电影制作的例子来类比

切面(Aspect)

角度1.3
角度1.3
正式运营 安全无广告
赞(0)  06.29 需网络
RPG Ri序章0.2.1
RPG Ri序章0.2.1
正式运营 安全无广告
赞(0)  03.30 需网络
推荐

最新好玩手游

更多

手游风云榜

更多

资讯阅读

更多


湘ICP备2022002427号-10 湘公网安备:43070202000427号
© 2013~2024 haote.com 好特网