萌新报道,写错的地方请大佬指正
首先想了解spring框架的代理模式请先了解一下java中普通的代理模式
这是我引用的菜鸟教程的设计模式理解:代理模式 | 菜鸟教程
这是代理模式理解的图片
分为两个类
代理类,被代理类
根据被代理者实现的接口动态的生成代理者,该方法为在运行期间动态生成代理者的方法 因为Jdk动态代理是代理者和被代理者实现相同的接口 所以代理者的类型也是被代理者的父接口类型
首先创建代理类继承的接口
然后重写被代理ServiceImpl,在里面重写两个测试方法
接下来 我们创建一个动态生成代理类的类
然后传入被代理者 返回类型为Object
然后提供一个构造函数,从而获取外界需要被增强的对象
然后接下来获取被增强过后的对象
this指的是当前这个类MyInvocationHandler
Jdk动态代理中
target.getClass()获取被代理者的类别.getInterfaces 获取他所有的方法
而在GGlib中 是不需要获取方法的
然后接下来invoke就是增强被代理类的方法 也就是在启动被代理类时自动引用的输出
接下来测试类
@Test public void test03(){ //创建被代理者 EmpServiceImpl empServiceImpl = new EmpServiceImpl(); //创建代理者 MyInvocationHandler myInvocationHandler = new MyInvocationHandler02(empServiceImpl); //调用getProxy方法 EmpService empService = myInvocationHandler.getProxy(); //返回list集合 List list = empService.findAll(); System.out.println(list); //给方法传参 empService.update(1); }