Spring aop代码赏析.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spring aop代码赏析

Spring AOP 实现代码赏析 Spring 的AOP 配置功能非常强大,如自动代理(autoproxy),提供XML 和注解的配置 方式。无论是哪个配置支持,其最终的本质则是通过 JdkDynamicAopProxy 或 CglibProxyFactory 完成对象的AOP 拦截支持。 下面将通过其中一种配置方式(基于Bean 名称的自动代理支持) ,来讲解一下Spring AOP 的实现原理: 下面是一个配置示例: BeanNameAutoProxyCreator 为名字匹配字符串或者通配符的bean 自动创建AOP 代理。 下面是BeanNameAutoProxyCreator 的类图,其是实现了BeanPostProcessor 接口。 在介绍Spring Bean 生命周期管理的时候,介绍过BeanPostProcessor 是实现Spring 在对Bean 对象进行实例化前后,回调相应的方法。 那么BeanNameAutoProxyCreator 就是实现了 postProcessBeforeInstantiation 方法, 对Bean 对象进行实现化前,进行AOP 的增强操作。 核的代码如下: 代码中,会调用createProxy 方法,实现对象实例的自动代码封装实现。 接着分析代码: createProxy 方法,其实就是调用了Spring 的ProxyFactory 对象进行 代理的封装实现 下面标注了主要实现代码: 接下来 AopProxyFactory 是Spring 提供的一个接口类,Spring 默认使用的 DefaultAopProxyFactory 实现类。 我们再来分析一下createAopProxy 方法的实现, 下面标注的主要实现代码 注:上面的代码我们发现Spring 对于Bean 对象的AOP 处理采用了两种方式,如果 是有接口的类则采用JDKDynamicAopProxy ,如果是普通的类,则采用CglibProxyFacotry 实现。关于Cglib 这个项目的说明,大家可以参见其官方网站的说明。 下面是JdkDynamicAopProxy 类的代理实现,就是使用JDK 的Proxy 类进行代理处理 基于JdkDynamicAopProxy 封装的实例,AOP 拦截都会回调 JdkDynamicAopProxy 的invoke 方法 JdkDynamicAopProxy 的类图如下: AopProxy InvocationHandler Realization Realization JdkDynamicAopProxy +invoke() 基于CglibProxyFactory 则通过Cglib2AopProxy 的getProxy 方法实现实例对象的增强 下面对其主要的代码进行标记: 至此Spring 的AOP 的代理的封装过程已经介绍完成。下面我们来看一下AOP 切面的 通知机制实现。 下面就只以JdkDynamicAopProxy 为例,Cglib 也是类同。 刚才介绍过基于JdkDynamicAopProxy 封装的实例,AOP 拦截都会回调 JdkDynamicAopProxy 的invoke 方法 下面来分析一下invoke 的主要代码: 上面的代码截取自JdkDyanmicAopProxy 的invoke 方法, 首先会获得所有的Advice 通过方式,然后通过反射的方式来应用这些通知方式。 获后就可以根据不同的通知实现,来拦截处理方法的切面的回调操作。 1.1.1 JDK Proxy AOP 实现 相关类及其方法 java.lang.reflect.Proxy, Proxy 提供用于创建动态代理类和实例的静态方法. 只能针对接口创建代理 newProxyInstance() 返回一个指定接口的代理类实例,该接

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档