帅气十足的安哥 2018-11-03 06:07 采纳率: 33.3%
浏览 2342
已采纳

动态代理的作用和aop的作用?

网上看了好多博客,都说是在代理的方法前后执行一个逻辑,那aop也能实现,为什么还要用到动态代理,这个不明白了。。。

  • 写回答

2条回答 默认 最新

  • 玄尺 2018-11-03 06:35
    关注

    我理解:
    1. 动态代理是一种设计模式,用于增强代理对象的功能的一种设计方式。更严格的来说代理包括静态代理和动态代理,只不过动态代理对于代码没有侵入性,技术实现难度大了些,所以大家谈的相对较多。
    2. AOP这是spring提出的用于增强spring bean中方法功能的设计思路和具体实现。AOP思路和动态代理很像,AOP的原则是一切皆可代理,口气比动态代理大多了。
    AOP的具体实现比如cglib,javasist,cglib应该算是AOP实现的集大成者,这框架的能力强到爆炸,你可以随心所欲操作字节码。比如曾经使用spring AOP魔改jdk的代码。

    至于作用就是这些,一般来说使用AOP可以解决我们日常工作中:
    1. 拦截
    2. 在不能动原有代码基础上动他的代码
    3. 为了对上层服务透明,一般也都是AOP

    最后举几个每天都在用的AOP例子:
    1. 数据库事务操作
    对于事务操作,只能是start transaction; ....; commit;/rollback;你以为加个注解或者加个配置就能完成那么复杂的事务,这都是AOP拦截对象,做了增强
    2. 监控
    SOA架构下监控是必不可少的,这种监控怎么搞。总不能每一个接口都加上一条监控?所以都是AOP拦截统计获得
    3. spring有一个重试框架
    这个框架允许你对一个方法配置重试次数,重试时间等等,这也都是AOP的作用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛