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

响应式网站的发展现状在线刷高质量外链

响应式网站的发展现状,在线刷高质量外链,免费手机网站源码,开发手机网站用什么好前言 在上一篇文章中,我们讲解了Spring中那些注解可能会产生AOP动态代理,我们通过源码发现,完成AOP相关操作都和ProxyFactory这个类有密切关系,这一篇我们将围绕这个类继续解析 演示 作用 ProxyFactory采用策略模式生成动态代理对象,具体生成cglib动态代理还是jdk动态代理,…前言 在上一篇文章中,我们讲解了Spring中那些注解可能会产生AOP动态代理,我们通过源码发现,完成AOP相关操作都和ProxyFactory这个类有密切关系,这一篇我们将围绕这个类继续解析 演示 作用 ProxyFactory采用策略模式生成动态代理对象,具体生成cglib动态代理还是jdk动态代理,是根据我们具体设置的内容所决定的,我们分别演示一下生成cglib动态代理和jdk动态代理两种情况。具体细节可以详细阅读DefaultAopProxyFactory的createAopProxy方法 生成cglib动态代理 package com.test.aop.test;public class CglibTarget {public void doObject() {System.out.println(CglibTarget doObject);} }package com.test.aop.test;import org.springframework.aop.framework.ProxyFactory;public class CglibProxy {public static void main(String[] args) {ProxyFactory proxyFactory new ProxyFactory();proxyFactory.setTarget(new CglibTarget());CglibTarget proxy (CglibTarget) proxyFactory.getProxy();proxy.doObject();} }我们可以发现最终是以cglib动态代理方式生成代理对象 生成jdk动态代理 package com.test.aop.test;public interface JdkTarget {void doObject(); }package com.test.aop.test;public class JdkTargetImpl implements JdkTarget {Overridepublic void doObject() {System.out.println(JdkTargetImpl doObject);} }package com.test.aop.test;import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.target.SingletonTargetSource;public class JdkProxy {public static void main(String[] args) {ProxyFactory proxyFactory new ProxyFactory();proxyFactory.setInterfaces(JdkTarget.class);proxyFactory.setTargetSource(new SingletonTargetSource(new JdkTargetImpl()));JdkTarget proxy (JdkTarget) proxyFactory.getProxy();proxy.doObject();} }我们可以发现最终是以jdk动态代理方式生成代理对象  ProxyFactory源码解析 我们先观察一下ProxyFactory这个类的继承关系 我们以proxyFactory.getProxy()方法为切入口,进行源码解析  对上述流程进行梳理见下图 我们分别查看两种方式的代理过程 jdk动态代理过程(JdkDynamicAopProxy) jdk动态代理的过程比较简单主要就是利用Proxy.newProxyInstance方法创建代理对象,会默认实现SpringProxy,Advised,DecoratingProxy三个接口 cglib动态代理过程(CglibAopProxy)  cglib动态代理主要利用我们自定义的ProxyFactory对象,然后根据设置的参数构建Enhancer对象,然后创建代理对象。我们需要注意的是代理对象一共有七个拦截器,spring会根据我们调用的方法,指定拦截器。比如我们调用equal方法就会经过EqualsInterceptor拦截器,调用hashCode方法就会经过HashCodeInterceptor拦截器。我们主要需要关注的就是DynamicAdvisedInterceptor拦截器除了equal、hashcode这些特殊的方法普通方法一般都会经过这个拦截器。具体进入那个拦截器可以查看CglibAopProxy类的accept方法 cglib动态代理的对象会默认实现SpringProxy,Advised两个接口 ProxyFactory的重要属性Advisor 我们在前文中说到EnableTransactionManagement,EnableAspectJAutoProxy完成AOP动态代理都是依靠AbstractAutoProxyCreator的postProcessAfterInitialization方法中完成的,其中最主要的方法是wrapIfNecessary,我们查看相关源码 通过源码我们知道只有找到了,可以作用于当前bean的Advisor,spring才会进行动态代理 我们在上文中提到了EnableTransactionManagement,EnableAspectJAutoProxy两个注解的渊源,然后得出结论:如果同时存在,最终只能存在一个优先级更高的BeanPostProcessor(bpp) 那么EnableAspectJAutoProxy这个注解注入了一个优先级更高的bpp,有什么扩展点呢?我们以上图中getAdvicesAndAdvisorsForBean方法为切入口进行分析 EnableTransactionManagement注入的bpp没有重写findCandidateAdvisors方法,其查找Advisor的方法为父类的默认实现。EnableAspectJAutoProxy注解注入的bpp重写了findCandidateAdvisors方法,其在父类方法的基础上又试图通过BeanFactoryAspectJAdvisorsBuilder的buildAspectJAdvisors方法寻找更多的Advisor,最后再判断这些找到的Advisors是否可以作用在当前bean,如果存在可以作用于当前bean的Advisors,则进行AOP动态代理 总结 ProxyFactory这个类在Spring完成AOP动态代理的过程中起到了重要的作用具体如下所述 可以通过配置决定Spring进行aop动态代理的方式,比如将EnableTransactionManagement注解的proxyTargetClass参数设置为true(不能保证一定进行cglib动态代理,具体可以查看DefaultAopProxyFactory的createAopProxy方法)可以设置监听器监听动态代理对象可以决定是否提前暴露代理对象,比如将EnableAspectJAutoProxy注解的exposeProxy参数设置为true,然后通过AopContext.currentProxy()就可以获取原始对象可以通过查找是否存在作用于指定bean的Advisors,来决定是否需要进行动态代理
http://www.hkea.cn/news/14428147/

相关文章:

  • 中山祥云网站建设网站信息员队伍建设方案
  • 网站开发技能证书深圳H5网站开发
  • 网站改版申请网站流量查询网站
  • 企业网站模板趋势wordpress配置支付宝
  • 酒店网站建设方案策划网站建设专
  • 站长平台官网如何让百度口碑收录自己的网站
  • 淄博市住房和城乡建设厅网站python 快速搭建网站
  • 南阳市城乡和住房建设局网站网站项目评价
  • 杭州电商网站策划设计广东省建设工程安全协会网站
  • 宜昌市住房和城乡建设厅官方网站网站开发的源码
  • 昆明网站建设加q.479185700酒店加盟什么网站建设
  • 牡丹江建设局网站淄博 做网站
  • 农机局网站建设方案app与网站用的服务器
  • 做网站花的钱和优化网站有关系吗广州seo推广运营专员
  • 建设网站人员名单网站开发的推荐
  • 拐角型布局网站做英雄联盟网站的图片素材
  • 无锡网站网页设计培训wordpress股票api
  • 局域网建设网站昆明酒店网站建设
  • 顺德龙江网站建设网站开发公司选择
  • 惠州模板网站哪些网站是用iframe
  • 在哪请人做网站义乌哪里有学做网站的
  • 国内优秀网站设计欣赏关键词指数批量查询
  • 广州网站设计教程来钱快app
  • 网站备案授权书填写模板宁波如何做seo排名优化
  • 手机微信网站怎么做的好wordpress不能重置密码
  • c++能不能作为网页开发语言贵州seo技术培训
  • 广西建设监理协会官网站网站建设需要学什么语言
  • drupal 网站实例宜昌网站推广优化技巧
  • jsp做的网站运行都需要什么福田做网站怎么样
  • 网站制作营销型网络营销策划方案3000字