Spring AOP实现原理详解之Cglib代理实现

本文深入探讨了Spring AOP中的Cglib动态代理实现原理,包括代理模式、动态代理概念、Cglib的工作流程,以及Spring如何使用Cglib创建代理。通过一个简单的案例展示了Cglib的使用,并解释了为何final方法和静态方法无法被代理。此外,还提供了SpringAOP中Cglib代理的具体实现代码参考。
摘要由CSDN通过智能技术生成

引入

我们在前文中已经介绍了SpringAOP的切面实现和创建动态代理的过程,那么动态代理是如何工作的呢?本文主要介绍Cglib动态代理的案例和SpringAOP实现的原理。

要了解动态代理是如何工作的,首先需要了解

  • 什么是代理模式?
  • 什么是动态代理?
  • 什么是Cglib?
  • SpringAOP和Cglib是什么关系?

动态代理要解决什么问题?

什么是代理?

代理模式(Proxy pattern): 为另一个对象提供一个替身或占位符以控制对这个对象的访问

举个简单的例子:

我(client)如果要买(doOperation)房,可以找中介(proxy)买房,中介直接和卖方(target)买房。中介和卖方都实现买卖(doOperation)的操作。中介就是代理(proxy)。

什么是动态代理?

动态代理就是,在程序运行期,创建目标对象的代理对象,并对目标对象中的方法进行功能性增强的一种技术。

在生成代理对象的过程中,目标对象不变,代理对象中的方法是目标对象方法的增强方法。可以理解为运行期间,对象中方法的动态拦截,在拦截方法的前后执行功能操作。

什么是Cglib? SpringAOP和Cglib是什么关系?

Cglib是一个强大的、高性能的代码生成包,它广泛被许多AOP框架使用,为他们提供方法的拦截。

Cglib代理的案例

这里我们写一个使用cglib的简单例子。@pdai

pom包依赖

引入cglib的依赖包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>tech-pdai-spring-demos</artifactId>
        <groupId>tech.pdai</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>007-spring-framework-demo-aop-proxy-cglib</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/cglib/cglib -->
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>3.3.0</version>
        </dependency>
    &
最低0.47元/天 解锁文章
使用cglib实现aop切面编程
Mr_Dai的博客
11-27 962
我最近在写一个简易的java web框架,其中包括ioc,mvc,aop,dao等基本功能,这几天把aop这块弄得差不多了,所以在这里总结一下。 项目详细信息:coin-framework spring中核心的概念就是ioc和aopaop面向切面编程听起来很厉害,所以今天我们用cglib动态代理实现一个简单的aop。 首先我们模仿一下springaop中基于注解的切面编程。 @Asp...
AOP使用CGLIB实现AOP功能
10-12
Spring AOP实现方法之一:CGLIB 实现AOP功能
springboot2.x AOP 默认使用Cglib 源码
最新发布
曾令胜的博客
07-17 770
SpringBoot 2.x AOP中会默认使用Cglib实现,但是Spring5中默认还是使用jdk动态代理Spring AOP 默认使用 JDK 动态代理,如果对象没有实现接口,则使用 CGLIB 代理。也可以强制使用 CGLIB 代理springboot默认使用cglib实现代码逻辑来记录一下。
Spring AopCglib实现原理详解
weixin_34310127的博客
08-25 239
2019独角兽企业重金招聘Python工程师标准>>> ...
cglib实现AOP
zzg
08-22 351
CGLibjava标准库提供的实现方案不同,cglib主要是基于实现类(如StudentInfoServiceImpl.java)扩展一个子类 来实现。与Dynamic Proxy中的Proxy和InvocationHandler相对应,net.sf.cglib.proxy.Enhancer和 MethodInterceptor在CGLib中负责完成代理对象创建和方法截获处理,产生的是目标类的子...
使用 CGLIB 实现 AOP
HappyRocking的专栏
09-22 748
实际应用中,需要代理的类可能没有实现接口,那么就不能用 JDK 来实现动态代理,可以使用 CGlib实现CGlib 动态代理: package aop.test.factory; import java.lang.reflect.Method; import output.test.impl.HelloBean; import net.sf.c
AOPCGLIB实现AOP功能
云天明的博客
05-04 445
AOP之CGLIN实现AOP功能
Spring框架系列(11) - Spring AOP实现原理详解Cglib代理实现.doc
07-08
Cglib代理Spring AOP在无法使用JDK动态代理(例如代理的目标对象没有实现接口)时的另一种选择。Cglib是一个强大的、高性能的代码生成库,它基于ASM库来动态生成子类,从而实现对方法的拦截。当目标类是不可变的...
深入浅析Springaop实现原理
09-02
6. **代理创建**:Spring根据目标类是否实现接口选择使用JDK动态代理CGLIB动态代理创建代理对象。代理对象在调用目标方法时,会执行相应的通知逻辑。 7. **使用代理对象**:在应用中,不再直接调用目标对象,而是...
Spring AOP实现原理详解及实例
10-19
JDK动态代理Java自带的动态代理实现,它要求被代理的对象必须实现一个接口。代理类和被代理类都实现了相同的接口,然后通过Java反射机制中的Proxy类和InvocationHandler接口来创建代理对象。当通过代理对象调用...
使用JDK中的Proxy技术实现AOP功能与使用CGLIB实现AOP功能
10-19
使用JDK中的Proxy技术实现AOP功能与使用CGLIB实现AOP功能
spring_aop_cglib实现方式
01-24
如果想使用CGLIB的技术来生成代理对象,那么需要引入CGLIB的开发的jar包,在Spring框架核心包中已经引入了CGLIB的开发包了。所以直接引入Spring核心开发包即可!
Spring AOP —— 详解实现原理、简单demo
CYK_byte的博客
03-05 2565
AOP 就是面向切面的编程, 是一种思想,是对某一类事情的集中处理。
实现AOPCGLIB
z69183787的专栏
03-18 1617
AOP系列文章:        Spring AOP: http://ray-yui.iteye.com/blog/2024759                 CGLIB: http://ray-yui.iteye.com/blog/2026426  什么是CGLIB?        CGLIB是一个强大的高性能的代码生成包 .它广泛的被许多AOP的框架使用,例如Spring
介绍Spring AOPCGLIB
weixin_47238995的博客
08-31 187
启用注解模式 <!-- 启动 @AspectJ 支持 --> <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"/> 定义需要处理的Bean // 使用 @Aspect 定义一个方面类 @Component public class Chinese { public String sayHello(String name)
Spring基础】CGLIB动态代理实现原理
热门推荐
yhl_jxy的博客
06-09 8万+
前言 Github:https://github.com/yihonglei/thinking-in-springCGLIB介绍 CGLIB(Code Generation Library)是一个开源项目!是一个强大的,高性能,高质量的Code生成类库, 它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO(Persistent Object 持久化对象)...
spring aop原理之二 cglib动态代理
幻城--那一份初心
01-15 215
cglib动态代理 也是spring aop底层原理之一,是针对与没有实现接口的类产生代理对象。 首先使用cglib 动态代理 我们需要导入spring 基本的jar包 创建没有实现接口的类 package cglib; /** * @Author: Han Yu * @Description: * @Date: Create in 19:58 2019/1/15 */ pub...
spring aop(二)--基于CGLib
xiejx618的专栏
12-20 1094
前文已介绍基于JDK创建的代理方式实现一个性能监视功能,此文基于CGLib创建代理实现同样的功能(代码主要来源于Spring.3.x企业应用开发实战). 1.pom.xml(当然也可以引入spring的jar包) cglib cglib 3.1 2.目标对象类(不再依赖接口) public class ForumServiceImpl { public void removeTo
写文章

热门文章

  • Java 实现 Base64 加密&解密方法 34333
  • 这应该是全网最全的分库分表方案了 16045
  • 【JAVA】值传递与引用传递 11280
  • 微服务链路追踪之zipkin搭建 8188
  • IDEA查看类的继承关系图形技巧,你学会了吗? 7635

分类专栏

  • 程序员 480篇
  • 计算机 480篇
  • Java 480篇
  • 计算器

最新评论

  • Java核心技术面试题(附答案),纯手码,看完是否思路清晰了?

    飞羽疾驰: 可以的,我看的另一篇,我面试时90%以上的题目在下边这个博客里:https://knife.blog.csdn.net/article/details/121219272

  • SpringCloud微服务实战——搭建企业级开发框架:多租户可配置的电子邮件发送系统设计与实现

    飞羽疾驰: 可以的,我看的另一个SpringCloud项目视频,从零开发,五天学会了SpringCloud项目实战:https://knife.blog.csdn.net/article/details/134659054

  • Java多线程专题之线程与进程概述

    阿J~: 每个知识点讲解清晰 ,学到了学到了

  • 【JAVA】值传递与引用传递

    17:39: 使用别人的总结,在Java中,引用传递实际上不是传递的该引用本身,而是传递的该引用的一个副本,如果不对副本指向进行修改,那么这个副本和引用值就是同一个地址,操作副本就相当于操作引用,这里就和引用传递一致了。但是如对该副本修改了指向,那么修改的只是副本值,而不会对引用本身造成影响。

  • 基于微前端qiankun的多页签缓存方案实践

    小墨宝: 加qq请教下 564495477 关于vue-router再次进入替换了路由信息,原先的路由监听失效了的问题

最新文章

  • 现在人手必备Java面试八股文,从起跑线开始冲刺
  • 一篇了解 K8s 日志采集与服务质量 QoS
  • 使用 Zadig 交付云原生微服务应用
2022年481篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司兰州五泉下广场做网站优化上饶网络推广网站优化崇明区公司网站优化方案网站关键词优化咨询xyz结尾的网站好优化吗汕头网站排名优化网站建设优化批发黄贝营销网站优化网站外链接优化常用手法贵阳推广优化网站铁岭网站关键词排名优化优化公司网站灵巧云速捷首选丰台网站优化费用宝山区公司官方网站优化定制方案大朗服装网站优化都有哪些台州网站优化搜索网站优化全网整合营销公司北海优化网站排名红桥区网站优化排名哪家好山西网站优化好处沈阳快速网站优化seo外链网站优化方案莒南临沂网站优化网站的优化过程有哪些咸宁产品网站优化公司乳山网站搜索优化手机网站怎么优化关键词排名优化网站导航的秘密靖江网站优化有哪些银川市网站优化步骤歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化