首页 > 其他分享 >aop

aop

时间:2024-12-24 21:42:14浏览次数:6  
标签:连接点 通知 aop 代理 AOP 执行 方法

1. 核心概念

1.1. 切面(Aspect)

切面是 AOP 的核心概念,指的是横切关注点的模块化。一个切面就是关注程序中某一类功能(如事务管理、日志记录等)的独立模块。切面可以由通知(Advice)和切入点(Pointcut)组成。

1.2. 通知(Advice)

通知是指具体的增强行为,它是在目标方法执行前后做一些操作。通知有不同的类型,分别执行在不同的时机:

  • @Before:方法执行前执行通知
  • @After:方法执行后执行通知(无论方法是否异常)
  • @AfterReturning:方法正常执行完后执行通知
  • @AfterThrowing:方法抛出异常时执行通知
  • @Around:环绕通知,既可以控制方法的执行顺序,也可以控制是否执行目标方法,甚至修改返回值。

1.3. 切入点(Pointcut)

切入点是定义在哪些方法上执行通知。它通过表达式来描述,通常配合 通知 一起使用。Spring AOP 提供了灵活的切入点表达式语言来匹配目标方法。

  • 例子execution(* com.example.service.*.*(..)) 匹配 com.example.service 包下的所有方法。

1.4. 连接点(Joinpoint)

连接点是程序执行的某个特定位置,它代表了目标方法执行的时机。在 Spring AOP 中,连接点指的是方法执行的位置。并不是所有的连接点都能应用通知,AOP 通过切入点来过滤需要应用通知的连接点。

1.5. 目标对象(Target Object)

目标对象是被代理的对象,即我们想要增强的对象。目标对象中的方法就是连接点,Spring 会通过 AOP 的代理机制来织入通知。

1.6. 代理(Proxy)

代理对象是由 AOP 框架生成的,用于将增强逻辑(通知)织入到目标对象中。Spring 使用动态代理(JDK 动态代理或 CGLIB 代理)来创建代理对象。

1.7. 织入(Weaving)

织入是指将切面应用到目标对象创建过程中的过程,最终生成代理对象。织入可以发生在编译时、类加载时或运行时。Spring AOP 在运行时进行织入,即动态代理。

标签:连接点,通知,aop,代理,AOP,执行,方法
From: https://www.cnblogs.com/zyb-luckey/p/18628759

相关文章

  • 网易伏羲亮相CCF程序员大会,有灵AOP平台首届编程挑战赛正式启幕
    12月21日至23日,由中国计算机学会(CCF)主办的首届“CCF程序员大会”在云南大理隆重召开。作为国内人工智能领域的领军者,网易伏羲受邀参与此次大会,与各界专家学者一同探索技术前沿,共赴思想盛宴。本届大会以“智汇大理,码动未来——共筑新发展、新范式”为主题,以技术与文化为核心,聚焦A......
  • AOP 开发明确的事项
    AOP开发明确的事项1)需要编写的内容编写核心业务代码(目标类的目标方法)编写切面类,切面类中有通知(增强功能方法)在配置文件中,配置织入关系,即将哪些通知与哪些连接点进行结合2)AOP技术实现的内容Spring框架监控切入点方法的执行。一旦监控到切入点方法被运行,使用......
  • XML 配置 AOP 详解
    XML配置AOP详解1)切点表达式的写法表达式语法:execution([修饰符]返回值类型包名.类名.方法名(参数))访问修饰符可以省略返回值类型、包名、类名、方法名可以使用星号*代表任意包名与类名之间一个点.代表当前包下的类,两个点…表示当前包及其子包下的类......
  • AOP面向切面编程
    1.1动态代理​动态代理是指:程序在整个运行过程中根本就不存在目标类的代理类,目标对象的代理只是由代理生成工具(不是真实定义的类)在程序运行时由JVM根据反射等机制动态生成,代理对象与目标对象的代理关系在程序运行时确定。实现方式:jdk动态代理,使用jdk中的Proxy,Met......
  • 49天精通Java(Day 32):动态代理与AOP
    ......
  • 有灵AOP平台首届编程挑战赛开启在即!CCF程序员大会赠票福利限时派送中!
    赠票福利12月21日~23日,CCF程序员大会将在云南大理举办。此次大会将聚焦AI时代程序员群体技能提升和产业生态构建,网易伏羲受邀参会,届时网易伏羲负责人范长杰将于12月22日15:20带来《从AOP编程范式到未来的工作》主题演讲,深入分享AOP编程前沿进展与实践,并将于现场宣布有灵AOP平台......
  • 探索 Spring AOP:全面解析与实战应用
    在现代Java开发领域,Spring框架无疑占据着重要地位,而SpringAOP(Aspect-OrientedProgramming,面向切面编程)作为Spring框架的关键特性之一,为开发者提供了一种强大的编程范式,用于实现横切关注点的模块化。无论是处理日志记录、事务管理、性能监控还是安全控制等方面,SpringAOP......
  • 探索 Spring AOP:全面解析与实战应用
    在现代Java开发领域,Spring框架无疑占据着重要地位,而SpringAOP(Aspect-OrientedProgramming,面向切面编程)作为Spring框架的关键特性之一,为开发者提供了一种强大的编程范式,用于实现横切关注点的模块化。无论是处理日志记录、事务管理、性能监控还是安全控制等方面,Spring......
  • 使用AOP防止请求重复提交
    使用AOP防止请求重复提交常见的重复提交场景网络延迟:用户在提交订单后未收到确认,误以为订单未提交成功,连续点击提交按钮。页面刷新:用户在提交订单后刷新页面,触发订单的重复提交。用户误操作:用户无意中点击多次订单提交按钮。防止重复提交的需求幂等性保证:确保相同的请求多次......
  • autofac 通过类方式完成aop扩展
    usingAutofac;usingAutofac.Extras.DynamicProxy;namespaceautofac通过类的方式扩展aop;classProgram{    staticvoidMain(string[]args)    {        //创建一个容器        ContainerBuilderbuilder=newContainerBuilder();   ......