☰
加深动态代理的理解
2026/10/17 8:32:00 网站建设 项目流程

静态代理(每个接口写一个代理类)

动态代理(写一个代理类,不管是哪个接口都可以调用,自动生成)(反射调用我们以前存在的代码)

我们运行的时候,先用接口new以前的对象就是impl,

再把他丢进我们的代理类里面,这样我们新增的代码就加上去了

注意:(代理类里面要用构造器实现impl,然后在新增代码里面调用以前存在的代码)

一开始的代码

现在新增一个需求,比如说我们保存用户之前先要打印日志

不能修改以前的代码(可能很多人在用)

这时候我们新建一个代理类,同样实现这个接口,但是在前后加上我们需要的功能,

重点:我们调用的时候还是需要调用原来impl的,只是在他的上下加上我们后面需要的代码

重点:我们创建以前的impl的对象,但是把他丢在我们的代理类里面,运行的时候,我们调用接口,相当于运行的是我们的代理类

构造器(需要构造以前的代码)

代理类(新增的代码+调用以前那个impl的)

参数类型写成UserService(接口),是为了兼容所有实现类。
但你实际传进去的,永远是UserServiceImpl这样的具体对象。
类型是"门框",实际对象是"进门的人"。

重点:我们手写代理类的时候,需要传参,把imp传进去,但是我们一般写接口好一点,写接口传进去,他的子类都能传进去

动态代理:

解决:把手写代理类这件事。交给程序在运行时自动生成

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询