关于动态代理给出自己的一些简单的理解,通俗一点点吧想了两三天才理顺

关于动态代理的作用和一些实现的方法这里就不一一到来了,只是简单的说一下自己的理解,也希望不怎么理解的朋友能够豁然开朗,虽然这里不能够带你走上人生巅峰,但是还是希望能带你入一下门。


这个mybeanfactory提供一个返回UserServiceImpl代理类的工厂,因为要将目标内UserServiceImpl(需要被代理的类,为什么要代理,请自行百度,好吧,告诉你是因为不希望在被代理的类中注入别的类从而产生依赖关系,达到解耦的目的)和切面类myaspect(一个方法执行前后需要执行的方法,比如事务,性能监控(方法运行时间))相互结合,所以将两类的实例都要注入工厂中,在下面进行结合(不要想歪,这个结合就结合了,回不来分不开的),好了,下面进去正题:
proxy听说是jdk的反射类,反正我是不懂,因为创建的是UserserviceImpl的代理类,所以返回的是UserService的实例(跟被代理的类UserserviceImpl实现同一个接口),有点眉目了没,没错,就是相当于 动态的创建了一个实现Userservice接口的类(即代理类) ,动态的这个类中复写了被代理的类的方法(就是名字一样的方法但里面调用的是invoke方法,即invocationhandler中的invoke方法),通过proxy.newproxyInstance(classload,interfaces,h)方法返回一个 实现了UserService的实例proxyservice(代理类对象) ,并将其返回,从而得到代理的对象,当对象调用方法时直接调用invoke方法,将myaspect的方法和被代理类userserviceImpl的方法在invoke排序就可以了(下面有图),返回执行方法后的对象
下面看一下参数,proxy.proxynewinstance(classload,interfaces,h),第一个参数和目标类(被代理类)用同一个加载器,第二个参数和目标类(被代理类)用同一个接口,所以就相当于创建了一个新的和目标类同一个接口的类了嘛。
个人见解洗洗再喷,欢迎一起交流,谢谢您的观看,再见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值