当前位置: 首页 > news >正文

Spring 代理的选择

        Spring使用ProxyFactory用来创建代理类,用AopProxyFactory选择具体的代理实现,总共有两种实现,一个是JdkDynamicAopProxy,另一个是ObjenesisCglibProxy。代理的选择具体可以分为以下三种情况。

1.proxyTargetClass为false,目标实现了接口,用jdk实现

       //4.创建代理Target target = new Target();ProxyFactory proxyFactory = new ProxyFactory();proxyFactory.setTarget(target);proxyFactory.addAdvisor(advisor);proxyFactory.setInterfaces(target.getClass().getInterfaces());I1 proxy = (I1) proxyFactory.getProxy();System.out.println(proxy.getClass());proxy.foo();System.out.println("___________");proxy.bar();

2.proxyTargetClass为false,目标没有实现接口,用cglib实现

static class Target2 {public void foo() {System.out.println("Target foo");}public void bar() {System.out.println("Target Bar");}}
       //4.创建代理Target2 target = new Target2();ProxyFactory proxyFactory = new ProxyFactory();proxyFactory.setTarget(target);proxyFactory.addAdvisor(advisor);proxyFactory.setInterfaces(target.getClass().getInterfaces());proxyFactory.setProxyTargetClass(false);Target2 proxy = (Target2) proxyFactory.getProxy();System.out.println(proxy.getClass());proxy.foo();System.out.println("___________");proxy.bar();

3.proxyTargetClass为true,总是使用cglib实现

        //4.创建代理Target target = new Target();ProxyFactory proxyFactory = new ProxyFactory();proxyFactory.setTarget(target);proxyFactory.addAdvisor(advisor);proxyFactory.setInterfaces(target.getClass().getInterfaces());proxyFactory.setProxyTargetClass(true);I1 proxy = (I1) proxyFactory.getProxy();System.out.println(proxy.getClass());proxy.foo();System.out.println("___________");proxy.bar();

http://www.dtcms.com/a/581668.html

相关文章:

  • 构建可用于生产环境的AI智能体
  • CAN终端电阻的用处
  • 上海seo推广整站哪个网站的pc端是用vue做的
  • 应届生出来做网站还是做报纸好网站后台管理图片
  • [GDOUCTF 2023]泄露的伪装
  • AtCoder Educational DP Contest 刷题记录Ⅱ
  • 如何构建以数据驱动的现代软件架构
  • 如何禁止Chrome的重新启动即可更新窗口弹窗提示
  • 爱用建站 小程序镇江网站制作优化
  • 在Ubuntu中下载gcc
  • 杰理蓝牙耳机开发 -- SPP功能开发与应用
  • 【锦州通APP注册_登录安全-无验证方式导致安全隐患】
  • 网站建设属于哪个类目淘宝网站开发费用
  • Socket vs WebSocket
  • Java中BufferedImage转byte[]字节数组
  • day10 鹏哥C语言 操作符
  • 推广平台网站聊城网站建设推广
  • 政策东风下:卓玛儿童级健康腻子引领行业升级
  • Azure Storage Discovery(国际版)正式发布
  • 4、prometheus-服务发现k8s api-2
  • 立冬节气科学调养身心
  • 安徽省建设行业质量与安全协会网站网站建设拓客有什么方法
  • 【XR开发系列】2025 年 XR 开发入门,我该选择 Unity 还是 Unreal Engine?
  • 在wps软件的word中使用js宏命令设置表格背景色
  • 怎样写网站文案零食网站建设前的市场分析
  • 环保网站建设的主题七牛部署WordPress
  • (八)嵌入式面试题收集:8道
  • 【App开发】04:Android Studio第一个项目之页面开发
  • Client port found: 2181. Client address: localhost. Client SSL: false.
  • 用ffmpeg来压缩视频文件