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

深圳响应式网站建设哪家好虚拟体验网站

深圳响应式网站建设哪家好,虚拟体验网站,淘宝关键词工具,顺企网哈尔滨网站建设前面提到过#xff0c;在Spring中有两种类型的代理#xff1a;使用JDK Proxy类创建的JDK代理以及使用CGLIB Enhancer类创建的基于CGLIB的代理。 你可能想知道这两种代理之间有什么区别#xff0c;以及为什么 Spring需要两种代理类型。 在本节中#xff0c;将详细研究代理…前面提到过在Spring中有两种类型的代理使用JDK Proxy类创建的JDK代理以及使用CGLIB Enhancer类创建的基于CGLIB的代理。 你可能想知道这两种代理之间有什么区别以及为什么 Spring需要两种代理类型。 在本节中将详细研究代理之间的差异。
代理的核心目标是拦截方法调用并在必要时执行适用于特定方法的通知链。 通知的管理和调用基本上是独立于代理的由SpringAOP框架管理。 而代理主要负责拦截对所有方法的调用并将它们根据需要传递给AOP框架以便应用通知。 除上述核心功能外代理还必须支持一组附加功能。可以通过AopContext类(这是一个抽象类)配置代理以公开自己以便可以检索代理并从目标对象调用代理上的被通知方法。 当通过ProxyFactorysetExposeProxy()启用该功能时代理负责确保代理类被适当地公开。 另外所有代理类默认实现Advised接口从而允许在创建代理之后更改通知链。 代理还必须确保任何返回代理类(即返回代理目标)的方法实际上返回的是代理而不是目标。 正如你所看到的典型的代理需要执行很多工作并且所有这些逻辑都在JDK和CGLIB代理中实现。 使用JDK动态代理 JDK代理是Spring中最基本的代理类型。 与CGLIB代理不同JDK代理只能生成接口的代理而不能生成类的代理。 这样一来想要代理的任何对象都必须至少实现一个接口并且生成的代理将是实现该接口的对象。 一般来说为类使用接口是一种很好的设计但并不总是可行的尤其是当使用第三方或旧代码时。 在这种情况下必须使用CGLIB代理。当使用JDK代理时所有方法调用都会被JVM拦截并路由到代理的invoke()方法。 然后由invoke()方法确定是否通知有关方法(根据由切入点定义的规则),如果确定想要通知则通过使用反射调用通知链然后调用方法本身。 在调用invoke()之前JDK代理无法区分被通知方法和未被通知方法。 这意味着对于代理上的未被通知方法invoke()方法仍然会被调用所有检查仍然会执行并且仍然可以通过使用反射进行调用。 显然每次调用方法时都会导致运行时开销即使代理不会执行额外的处理而只是通过反射调用未被通知的方法。 使用CGLIB代理 如果使用JDK代理那么在每次调用invoke()方法时有关如何处理特定方法调用的决策都会在运行时做出。 而当使用CGLIB时CGLIB会为每个代理动态生成新类的字节码并尽可能重用已生成的类。 在这种情况下所生成的代理类型将是目标对象类的子类。 当首次创建CGLIB代理时CGLIB会询问Spring如何处理每个方法。这意味着每次调用JDK代理上的invoke()时所执行的许多决策对于CGLIB代理来说只会执行一次。 由于CGLIB生成实际的字节码因此在处理方法的方式上有更多的灵活性。 例如CGLIB代理可以生成适当的字节码来直接调用任何未被通知的方法从而减少代理所带来的开销。 另外CGLIB代理可以确定一个方法是否返回代理,如果不返回则允许直接调用方法调用从而进一步减少运行时间开销。 CGLIB代理还以不同于JDK代理的方式处理固定通知链。 固定通知链是在代理生成后不会更改的链。默认情况下即使在创建代理后也可以更改代理上的顾问和通知虽然很少有必要这么做。 CGLIB代理以特定方式处理固定通知链从而减少执行通知链的运行时间开销。 具有冻结通知链(frozen advice chain)的CGLIB代理(即当通过调用ProxyConfig类中的setFrozen()方法来冻结代理时CGLIB将执行进一步的优化但是不允许更改通知)。 选择要使用的代理 决定使用哪个代理通常很容易。CGLIB代理可以代理类和接口而JDK代理只能代理接口。 在性能方面除非在冻结模式下使用CGLIB,否则JDK和CGLIB标准模式之间没有显著差异(至少在运行被通知和未被通知方法时没有显著差异)。 在这种情况下通知链不能更改且CGLIB在冻结模式下会进行进一步优化。 当需要代理类时CGLIB代理是默认选择因为它是唯一能够生成类代理的代理。 如果想要在代理接口时使用CGLIB代理必须使用setOptimize()方法将ProxyFactory中的optimize标志的值设置为true。
http://www.w-s-a.com/news/677467/

相关文章:

  • 建设网站如果赚钱电脑可以做服务器部署网站吗
  • 网站建设的编程专门做面包和蛋糕的网站
  • 档案网站建设比较分析南京建站公司
  • 哪个网站可以做店招傻瓜式wordpress
  • 网站开发项目经理职责青岛模版网站建设
  • 企业建站哪个好网站建设所用程序
  • 网站建设seo视频定制图片软件
  • 404错误直接转向到网站首页四川省建筑施工企业人员考试平台
  • 手表电商网站智能展厅
  • 南海网站推广梅州做网站公司
  • 昆明专业网站建设公司成都外贸网站建设费用
  • php mysql网站开发项目公司网站宣传设计
  • 自己做网站服务器的备案方法怎么查网站点击量
  • 信息产业部icp备案中心网站织梦做双语网站
  • 爱站网站长seo综合查询工具局网站信息内容建设 自查报告
  • 我想建一个网站怎么建淄博网站推广那家好
  • 做网站和app需要多久河南自助建站建设代理
  • 大连做企业网站的公司宣传平台有哪些类型
  • 如何用微信做网站免费设计logo网站有哪些
  • 服务平台型网站余姚网站定制
  • 网站搭建联系方式太平阳电脑网网站模板
  • 请简述网站制作流程html5网络公司网站模板
  • 海尔集团企业网站建设分析重庆市建设银行网站
  • 介绍公司的网站有哪些广西壮族自治区
  • 网站做rss wordpress9 1短视频安装软件
  • 网站建设价格西安室内设计网站排行榜前十名知乎
  • 用nas建设服务器网站用vs做音乐网站
  • 天津市武清区住房建设网站网站自适应框架
  • 制作移动网站公司网站开发职业规划
  • 网站头部怎样做有气势wordpress 页面 锚