首页 > 其他分享 >Spring AOP中动态代理的选择

Spring AOP中动态代理的选择

时间:2023-12-01 15:15:56浏览次数:32  
标签:JDK 实现 Spring 代理 接口 AOP 动态

Spring AOP的实现是通过动态代理,并且有两种实现方式,分别是JDK动态代理和CGLib动态代理。Spring默认使用JDK动态代理,只有在类没有实现接口时,才会使用CGLib。

JDK的动态代理存在限制,那就是被代理的类必须是一个实现了接口的类,代理类需要实现相同的接口,代理接口中声明的方法。若需要代理的类没有实现接口,此时JDK的动态代理将没有办法使用,于是Spring会使用CGLib的动态代理来生成代理对象。
在 DefaultAopProxyFactory里的创建代理对象的方法里会判断,如果目标对象没有实现接口、或者实现的接口都是空接口,或者配置的cglib方式,则返回cglib代理对象,否则使用动态代理。

 

 

标签:JDK,实现,Spring,代理,接口,AOP,动态
From: https://www.cnblogs.com/lzxycjh/p/17869717.html

相关文章

  • AOP-@Around环绕增强-理解问题-测试-记录
    来源自定义注解测试切面环绕时,接口测试返回空白。理解关键在于:环绕增强后走的是切面类中的方法,你不给返回值(习惯void)就是空白=-=。@Around它可以包围一个方法或函数的执行,并在执行前后提供额外的逻辑。使用@Around注解,你可以定义一个通知(advice),该通知在目标方法执行之前和......
  • springboot创建线程池
    1.线程池的配置:@ConfigurationpublicclassThreadPoolConfig{@Bean(name="myThreadPool")//告诉你这个线程池的名字publicThreadPoolTaskExecutorthreadPoolTaskExecutor(){ThreadPoolTaskExecutorexecutor=newThreadPoolTaskExecutor();ex......
  • springboot如何用jar包启动,同时为不同机房设置不同的配置文件
    1、首先先把配置文件从jar中抽离示例代码:<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><excludes>......
  • springboot云HIS信息管理系统
    系统功能:为居民建立一份动态、连续、实时、共享的个人电子健康档案,包括家庭和个人信息采集、编辑、常见病诊疗、疾病预防控制服务和健康教育。针对基层医院的业务特点,实现以财务核算为基础,以临床医疗服务为中心的全程信息化管理,主要包括以下业务模块:门诊住院收费管理、以电子病历......
  • @validated 验证 List 参数在spring中
    主要介绍了@validated验证List参数在spring中相关的知识,希望对你有一定的参考价值。@PostMapping(value="complete")publicVocomplete(@Valid@RequestBody@Validated(CompleteTaskRequest.class)ValidList<CompleteTaskRequest>request,BindingResultbinding......
  • day133-spring boot常用参数注解
    springboot常用参数注解注解:@PathVariable路径变量@RequestHeader获取请求头@RequestParam获取请求参数(指问号后的参数,url?a=1&b=2)@CookieValue获取Cookie值@RequestAttribute获取request域属性@RequestBody获取请求体[POST]@MatrixVariable矩阵变......
  • 基于SpringBoot的在线视频教育平台-计算机毕业设计源码+LW文档
    一、选题背景及选题意义(国内外研究现状、初步设想及拟解决的问题):选题背景及意义:在线教育顾名思义,是以网络为介质的教学方式,通过网络,学员与教师即使相隔万里也可以开展教学活动;此外,借助网络课件,学员还可以随时随地进行学习,真正打破了时间和空间的限制,对于工作繁忙,学习时间不固定的......
  • Springboot017学生读书笔记共享-计算机毕业设计源码+LW文档
    摘要本论文主要论述了如何使用JAVA语言开发一个读书笔记共享平台,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述读书笔记共享平台的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶......
  • SSM SpringBoot vue考勤信息管理系统
    SSMSpringBootvue考勤信息管理系统系统功能登录注册个人中心部门信息管理上班时间管理考勤信息管理员工信息管理签到管理请假信息管理加班申请管理出差申请管理开发环境和技术开发语言:Java使用框架:SSM(Spring+SpringMVC+Mybaits)或SpringBoot前端:v......
  • 代理实现的几种方式
    代理实现的几种方式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.静态代理在使用静态代理时,需要定义一个接口或父类,被代理对象和代理对象一起实......