iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot/Spring AOP默认动态代理方式是什么
  • 119
分享到

SpringBoot/Spring AOP默认动态代理方式是什么

2023-07-05 18:07:21 119人浏览 安东尼
摘要

这篇文章主要介绍“SpringBoot/spring aop默认动态代理方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot/Spring AOP默认动态

这篇文章主要介绍“SpringBoot/spring aop默认动态代理方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot/Spring AOP默认动态代理方式是什么”文章能帮助大家解决问题。

1. springboot 2.x 及以上版本 

在 SpringBoot 2.x AOP中会默认使用Cglib来实现,但是Spring5中默认还是使用jdk动态代理。Spring AOP 默认使用 JDK 动态代理,如果对象没有实现接口,则使用 CGLIB 代理。当然,也可以强制使用 CGLIB 代理。

在 SpringBoot 中,通过AopAutoConfiguration来自动装配AOP.

SpringBoot/Spring AOP默认动态代理方式是什么

2. Springboot 1.x

Springboot 1.x AOP默认还是使用 JDK 动态代理的

SpringBoot/Spring AOP默认动态代理方式是什么

3.SpringBoot 2.x 为何默认使用 Cglib

因为JDK 动态代理是基于接口的,代理生成的对象只能赋值给接口变量。JDK动态代理使用Proxy.newProxyInstance()创建代理实现类,然而第二个参数就需要接口类型,如果没有接口类型就会报错。

Proxy.newProxyInstance(iCustomerInstance.getClass().getClassLoader(), iCustomerInstance.getClass().getInterfaces(), this);

而 CGLIB 就不存在这个问题。因为 CGLIB 是通过生成子类来实现的,代理对象无论是赋值给接口还是实现类,这两者都是代理对象的父类。

所以在2.x版本以上,将 AOP 默认实现改为了 CGLIB代理。

新建一个接口

public interface ICustomService {    void printf();}

新建一个ICustomService的实现类

@Servicepublic class CustomServiceImpl implements ICustomService {     public void printf() {     }}

再增加一个类不实现任何接口

@Servicepublic class CustomNoImpl {     public void hello() {            }}

然后启动,可以ICustomService和CustomNoImpl看出AOP的代理使用的是CGLIB的动态代理

SpringBoot/Spring AOP默认动态代理方式是什么

然后我们通过application.properties配置将代理默认设置为JDK代理。

spring.aop.proxy-target-class=false

然后启动调试发现,CustomNoImpl因为没有实现接口,所以使用的是CGLIB生成的代理,而

customService有接口实现,所以使用JDK的动态代理

SpringBoot/Spring AOP默认动态代理方式是什么

关于“SpringBoot/Spring AOP默认动态代理方式是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: SpringBoot/Spring AOP默认动态代理方式是什么

本文链接: https://www.lsjlt.com/news/354266.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot/Spring AOP默认动态代理方式是什么
    这篇文章主要介绍“SpringBoot/Spring AOP默认动态代理方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot/Spring AOP默认动态...
    99+
    2023-07-05
  • windows默认的启动方式是什么
    Windows默认的启动方式是通过引导管理器(Boot Manager)来加载操作系统。具体来说,当计算机启动时,BIOS或UEFI...
    99+
    2023-09-12
    windows
  • 什么是动态代理模式
    这篇文章主要讲解了“什么是动态代理模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是动态代理模式”吧!代理模式代理模式(Proxy Pattern)是...
    99+
    2024-04-02
  • Spring Data JPA 设置字段默认值方式是什么
    本篇文章为大家展示了Spring Data JPA 设置字段默认值方式是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring Data JPA设置字段默认值在...
    99+
    2023-06-21
  • Spring中AOP概念与两种动态代理模式原理详解
    目录1.概念1.AOP技术简介2.AOP的优势3.Spring AOP术语4.AOP 开发明确的事项 2.AOP底层实现1.AOP 的动态代理技术:3.基于cglib的动态...
    99+
    2024-04-02
  • Spring静态代理和动态代理概念及使用方法是什么
    这篇文章主要讲解了“Spring静态代理和动态代理概念及使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring静态代理和动态代理概念及使用方法是什么”吧!代理模式在学习 A...
    99+
    2023-07-05
  • ajax默认提交方式是什么
    这篇文章主要介绍“ajax默认提交方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ajax默认提交方式是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • Spring中静态代理和动态代理有什么不同
    本篇文章为大家展示了Spring中静态代理和动态代理有什么不同,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、静态代理1.1、静态代理的使用静态代理,代理类和被代理的类实现了同样的接口,代理类同时...
    99+
    2023-06-15
  • Redis的默认序列化方式是什么
    Redis默认的序列化方式是使用简单的字符串。Redis存储的数据都是以字符串的形式进行存储的,包括整数、浮点数、字符串等。Redi...
    99+
    2024-04-29
    Redis
  • 动态ip代理是什么
    动态ip代理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。要区分什么是动态IP代理,首先要弄清楚,什么叫代理IP?您将在您的计算机浏览器选择项(IE/ch...
    99+
    2023-06-25
  • Spring AOP与代理类的执行顺序是什么
    本篇内容介绍了“Spring AOP与代理类的执行顺序是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!关于 Spring AO...
    99+
    2023-07-05
  • Spring Schedule Task动态改写Cron配置方式是什么
    这篇文章主要介绍“Spring Schedule Task动态改写Cron配置方式是什么”,在日常操作中,相信很多人在Spring Schedule Task动态改写Cron配置方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-06-25
  • Java代理模式与动态代理之间的关系是什么
    这篇文章主要介绍“Java代理模式与动态代理之间的关系是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java代理模式与动态代理之间的关系是什么”文章能帮助大家解决问题。什么是代理模式代理模式是...
    99+
    2023-07-05
  • java动态代理的原理是什么
    小编给大家分享一下java动态代理的原理是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明使用代理将对象包装起来,然后用该代理对象取代原始对象。任何对原...
    99+
    2023-06-15
  • Java动态代理是什么意思
    这篇文章主要讲解了“Java动态代理是什么意思”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java动态代理是什么意思”吧!动态代理分两部分,动态和代理,我们先说下代理模式1、代理模式代理模...
    99+
    2023-06-20
  • Java动态代理机制是什么
    这篇文章主要讲解了“Java动态代理机制是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java动态代理机制是什么”吧!Java动态代理机制的出现,使得Java开发人员不用手工编写代理类...
    99+
    2023-06-17
  • Java中的动态代理是什么
    本篇内容介绍了“Java中的动态代理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!十分钟理解 Java 中的动态代理一、概述 什么是代...
    99+
    2023-06-02
  • 向Spring IOC容器动态注册bean实现方式是什么
    本篇内容主要讲解“向Spring IOC容器动态注册bean实现方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“向Spring IOC容器动态注册bean实现方式是什...
    99+
    2023-07-02
  • 代理ip的动态、静态线路是什么
    本篇内容主要讲解“代理ip的动态、静态线路是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“代理ip的动态、静态线路是什么”吧!1、动态线:一条线路上会有多个IP地址,每次切换IP都会得到不同...
    99+
    2023-06-25
  • SpringBoot Schedule调度任务的动态管理方法是什么
    这篇文章主要介绍了SpringBoot Schedule调度任务的动态管理方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot Schedule调度任务的动态管理方法...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作