spring框架之AOP模块(面向切面),附带通知类型---超详细介绍

简介: spring框架之AOP模块(面向切面),附带通知类型---超详细介绍

一,AOP简介

    是Spring框架中的一个重要模块,它提供了一种通过面向切面编程的方式来实现横切关注点的模块化的方法。AOP可以将应用程序的核心业务逻辑与横切关注点(如日志记录、事务管理、安全性等)分离开来,从而提高代码的可维护性和可重用性。

简单来说:通过动态代理技术可以在目标对象的方法的执行前、执行后以及抛出异常时织入切面逻辑

比如:书籍的增删改,本身只需要完成增删改的功能即可,这是如果需要添加日志功能,那么需要在原有的代码基础上,去修改添加日志功能,受牵连的方法就三个(add/edit/del)了

1.1 核心概念!(专业术语)

1.1.1 切面(Aspect):

   切面是一个模块,用于封装横切关注点的行为。它由切入点和切面逻辑组成。

1.1.2 切入点(Pointcut):

   切入点定义了在哪些连接点上织入切面逻辑。连接点可以是方法的执行、异常的抛出等。

1.1.3 通知(Advice):

    通知是切面在特定切入点上执行的动作。Spring AOP提供了四种类型的通知:前置通知      (Before)、后置通知(After)、返回通知(After-returning)和异常通知(After-throwing)  

1.1.4 织入(Weaving):

 织入是将切面应用到目标对象并创建代理对象的过程。织入可以通过编译期间的编译期织入、类加载期织入或运行期织入来实现。

  总而言之,Spring AOP提供了一种有效的方式来实现横切关注点的模块化。它能够改善代码的可维护性和可重用性,简化开发过程,并促进松耦合的设计

二,通知(7种)

为了让大家更能理解

普通spring-Config ioc实列:

定义一个接口类一个实现类,定义两个方法购书,发表评论方法

接口类 :

实现类:实现接口类方法

需要一个异常类,以便后续抛异常处理

接下来就是spring ioc的配置,如果没有spring Config文件。那就是pom.xml文件没有配置好且配置的时候需要联网!

spring Config 配置

运行结果

2.1 前置通知

根据上面实列来进行前置通知

在目标方法执行之前执行的通知。前置通知可以访问和修改方法的参数。

定义一个类并继承MethodBeforeAdvice 该所被继承的类是前置通知的类

spring Config Ioc的配置

测试结果

2.2 后置通知

在目标方法执行之后(无论是否发生异常)执行的通知。后置通知不能访问方法的返回值

定义一个类并继承AfterReturningAdvice 该所被继承的类是后置通知的类

spring Config Ioc的配置:

运行结果

2.3 环绕通知

环绕通知是最强大和最灵活的通知类型。它将包围目标方法的执行,可以在方法执行前后自定义处理逻辑。环绕通知必须显式地决定是否继续执行目标方法

定义一个类并继承MethodInterceptor 该所被继承的类是环绕通知的类

spring Config Ioc的配置:

运行结果:

2.4 异常通知

在目标方法抛出异常后执行的通知。异常通知可以访问抛出的异常信息,并在必要时处理异常

定义一个类并继承ThrowsAdvice 该所被继承的类是异常通知的类

spring Config ioc文件

运行结果

2.5 过滤通知

在目标方法顺利执行并返回结果后执行的通知。返回通知可以访问并修改方法的返回值。

spring Config ioc文件配置即可

运行结果:

目录
相关文章
|
12月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
793 2
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
934 0
|
11月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
11月前
|
XML Java 数据格式
《深入理解Spring》:AOP面向切面编程深度解析
Spring AOP通过代理模式实现面向切面编程,将日志、事务等横切关注点与业务逻辑分离。支持注解、XML和编程式配置,提供五种通知类型及丰富切点表达式,助力构建高内聚、低耦合的可维护系统。
|
11月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
905 8
|
监控 Kubernetes Cloud Native
Spring Batch 批处理框架技术详解与实践指南
本文档全面介绍 Spring Batch 批处理框架的核心架构、关键组件和实际应用场景。作为 Spring 生态系统中专门处理大规模数据批处理的框架,Spring Batch 为企业级批处理作业提供了可靠的解决方案。本文将深入探讨其作业流程、组件模型、错误处理机制、性能优化策略以及与现代云原生环境的集成方式,帮助开发者构建高效、稳定的批处理系统。
958 1
|
设计模式 Java 开发者
如何快速上手【Spring AOP】?从动态代理到源码剖析(下篇)
Spring AOP的实现本质上依赖于代理模式这一经典设计模式。代理模式通过引入代理对象作为目标对象的中间层,实现了对目标对象访问的控制与增强,其核心价值在于解耦核心业务逻辑与横切关注点。在框架设计中,这种模式广泛用于实现功能扩展(如远程调用、延迟加载)、行为拦截(如权限校验、异常处理)等场景,为系统提供了更高的灵活性和可维护性。
1545 0
|
缓存 监控 Java
Spring框架之AOP(面向切面编程)
Spring框架之AOP(面向切面编程)
338 0
|
XML 设计模式 安全
【Spring框架四】——Spring AOP 注解实现和xml方式实现1
【Spring框架四】——Spring AOP 注解实现和xml方式实现
398 0

热门文章

最新文章