【spring-day3】aop和动态代理

本文通过购车过程比喻,生动阐述了AOP(面向切面编程)的概念及其在软件开发中的应用。介绍了AOP如何通过动态代理解决代码重复问题,以及Spring框架中两种代理方式:JDK动态代理和CGLIB代理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天骑着小黄车路过好车(不知道算不算豪车)店,想进去看看,摆个pose,拍个照,定个位,然后发圈配文,加入微商不到一周,喜提好车(豪车),恭喜周总。

然而,17点竟然展厅没人,昏暗的灯,心里叹气,看来今天提不了车了,那就安静写代码吧。 这不,今天灵感一来,就来写写AOP思想。

aop,说是面向切面编程,倒是可以理解为面向service面编程。
aop的实现就靠动态代理,一个Java提供的,需要实现类实现接口,一个是cglib,spring引入的,可以对任何类代理(final的不行).

以买车为例子:
在这里插入图片描述

没有代理的时候,你想要个手扶拖拉机的跑车,累不累啊,还得找这个厂。
现实生活,不都存在4s店(代理商),你去买车,选车,交资料,贷款,付款,都是在4s店搞定的,4s店再和厂家结算。

【so,自己找个代理…】

我要买车
在这里插入图片描述

找个代理商
在这里插入图片描述

实现买车
在这里插入图片描述

在这里插入图片描述

以上,从我看车,买车,贷款全程下来,代理商帮我搞定就行了,但缺点是,来一个客户,就要创建一个代理商。
今天来一个买A牌子车的,明天来一个买B牌子车的,那么就得写2个代理类,麻烦。

spring呢,就为我们想好了,搞一个万能中介,你要啥代理商,管它要就行了。

【jdk动态代理】
在这里插入图片描述

在这里插入图片描述

接口里面全是方法,全是客户要干嘛的方法。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

上面实现类必须要实现接口,不然报错。亲测
以上还是有缺陷的,万一有没接口怎么办?

【cglib,不要接口也行】

这个一个要买飞机的客户。

在这里插入图片描述

万能的代理商

在这里插入图片描述

1.setSuperclass传入UserServiceImpl.class,代理工程就知道你要干嘛了,就知道该生产什么代理商了。
2.setCallback,授权
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值