其他分享
首页 > 其他分享> > ProxyFactory

ProxyFactory

作者:互联网

@Test
    public void test(){
       
        ProxyFactory proxyFactory = new ProxyFactory();
        // 可改变target的引用
        HotSwappableTargetSource targetSource = new HotSwappableTargetSource(new DemoOne("黄晓明"));
        proxyFactory.setTargetSource(targetSource);
        proxyFactory.addAdvice((MethodBeforeAdvice)(method,arg,target)->{
            System.out.println("before.....");
        });
        Hello proxy = (Hello) proxyFactory.getProxy();
        proxy.say("lisi");
        targetSource.swap(new DemoOne("张大大"));// 必须是DemoOne 不能是其他类,应为生成的proxy是DemoOne的子类(cglib代理)
        proxy.say("zhangsan");
    }

这里proxyFactory 直接setTarget 使用了Cglib动态代理。如果是构造方法如下:会使用jdk基于接口的动态代理。

public ProxyFactory(Object target) {
   setTarget(target);
   setInterfaces(ClassUtils.getAllInterfaces(target)); //设置到AdvisedSupport 配置中
}

标签:DemoOne,ProxyFactory,proxy,proxyFactory,new,target
来源: https://blog.csdn.net/jianlee1991/article/details/120850986