首页 > 其他分享 >只有一个方法被aop另外的方法没有aop那么spring会怎么生成代理对象并执行方法

只有一个方法被aop另外的方法没有aop那么spring会怎么生成代理对象并执行方法

时间:2024-09-20 15:26:07浏览次数:7  
标签:调用 Spring 对象 spring AOP 代理 aop 方法

在Spring中,使用AOP(面向切面编程)时,Spring框架会基于你的配置或注解来决定哪些方法需要被增强(即应用额外的行为,如日志记录、事务管理等)。当只有部分方法被指定为需要AOP处理时,Spring会根据这些配置动态地生成代理对象,并确保只有那些被标记为需要增强的方法在执行时会通过代理逻辑。

代理对象的生成

Spring AOP默认使用JDK动态代理或CGLIB代理来创建代理对象,具体使用哪种代理方式取决于目标对象的类型:

  • JDK动态代理:要求目标对象实现至少一个接口。Spring会为每个这样的目标对象生成一个实现了目标对象所有接口的代理类。这个代理类会在方法调用时插入切面逻辑。
  • CGLIB代理:如果目标对象没有实现任何接口,Spring将使用CGLIB库来生成目标对象的子类,并在子类中插入切面逻辑。

方法执行流程

当代理对象被创建后,对于通过代理对象调用的方法,执行流程会稍有不同:

  1. 调用代理对象的方法:当调用者调用代理对象上的方法时,实际上是在调用代理对象的相应方法。

  2. 判断是否需要增强:代理对象会根据配置或注解检查当前调用的方法是否需要被增强。如果方法被标记为需要AOP处理,代理对象会拦截这个调用。

  3. 执行切面逻辑:如果需要增强,代理对象会先执行切面的前置通知(Before advice),然后调用目标方法,之后可以执行后置通知(After advice)、返回通知(After Returning advice)或异常通知(After Throwing advice)等。

  4. 调用目标方法:如果方法不需要增强,或者切面逻辑已经执行完毕,代理对象会直接调用目标对象上的原始方法。

  5. 返回结果:目标方法执行完毕后,如果有返回值,并且存在返回通知,则返回通知会被执行,并最终将结果返回给调用者。

只有一个方法被AOP

如果只有一个方法被AOP增强,其他方法没有被增强,Spring仍然会按照上述流程创建代理对象。但是,当调用那些没有被增强的方法时,代理对象会直接调用目标对象上的原始方法,不会插入任何切面逻辑。

因此,Spring的AOP机制是非常灵活的,允许你细粒度地控制哪些方法需要被增强,而不会影响到其他方法的正常执行。

 

标签:调用,Spring,对象,spring,AOP,代理,aop,方法
From: https://www.cnblogs.com/super-chao/p/18422571

相关文章

  • 一种面向混合云平台基于LSTM预测模型的资源池配额方法。
    本文分享自天翼云开发者社区《一种面向混合云平台基于LSTM预测模型的资源池配额方法。》,作者:l****n基于用户的历史配额申请情况和实际资源使用情况组成数据集搭建LSTM时序预测模型。当前用户提出资源配额申请时,基于该用户的历史资源实际使用情况结合LSTM模型来预测该次配额申请的......
  • 基于Node.js+vue基于SpringBoot的民间遗产中心(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在全球化与文化多样性的背景下,民间遗产作为民族文化的重要组成部分,承载着丰富的历史记忆与地域特色,是连接过去与未来的重要纽带。然而,随着现代化进程的加速,......
  • 基于Node.js+vue基于SpringBoot的毕业生就业系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着高等教育的普及,每年有大量毕业生涌入就业市场,而企业与求职者之间的信息不对称问题日益凸显。传统的招聘方式效率低下,难以满足毕业生快速找到合适岗位及......
  • springboot大学计算机信息素养教学网站-计算机毕业设计源码77548
    摘要随着信息素养教育的重要性日益凸显,大学计算机信息素养教学成为学生综合素质培养的重要组成部分。本研究开发了一款大学计算机信息素养教学网站,旨在提供学生、教师和管理员全面的教学和学习支持。信息素养教学旨在培养学生获取、评估和有效使用信息的能力,促进信息技术与......
  • springboot幼教管理系统-计算机毕业设计源码19449
    摘 要幼教管理系统是针对幼儿园或幼教机构开发的一种信息管理系统。随着社会发展和人们对幼儿教育的重视度不断提高,传统的手工管理已经无法满足需求,因此开发一个基于Java的幼教管理系统可以帮助幼儿园或幼教机构高效地管理课程信息、亲子活动等内容,提高工作效率和服务质量。......
  • springboot社区医院管理信息系统-计算机毕业设计源码23303
    摘 要本文旨在探讨基于SpringBoot框架的社区医院管理信息系统的设计与实现。随着信息技术的快速发展,医院管理信息化已成为提升医疗服务水平、优化医疗资源配置的重要手段。社区医院作为基层医疗服务的重要组成部分,其信息化建设的推进对于提高基层医疗服务质量和效率具有......
  • aop日志管理
    1.//作用于方法的注解@AutoLog("删除图书")importjava.lang.annotation.*;//作用于方法的注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceAutoLog{Stringvalue()default"";}2.日志插入importcn.hutool.cor......
  • PWM控制技术(基本思想、逆变电路及其控制方法)
    目录一、基本思想二、控制方法三、三相电压型PWM逆变器四、异步调制、同步调制、分段同步机制五、采样法六、提高电流电压利用率一、基本思想二、控制方法三、三相电压型PWM逆变器四、异步调制、同步调制、分段同步机制一般多采用分段同步机制五、采样法......
  • 软件开发的方法论:Supra模型
    Supra模型是一种用于软件开发的方法论,特别是在需求工程领域。它提供了一种系统化的方式来识别、分析和管理软件项目的需求。Supra模型强调在整个软件生命周期中持续地关注用户需求,并且通过迭代的方式逐步细化和完善这些需求。这个名字“Supra”并不是一个广泛认可的标准术语,因此可......
  • (免费源码)spring boot 双端融合的教学过程管理系统小程序66431 计算机毕业设计必看必学
     springboot双端融合的教学过程管理系统小程序摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,双端融合的教学过程管理系统小程序被用户普遍使用,为方便用户能够可以......