网上看了好多博客,都说是在代理的方法前后执行一个逻辑,那aop也能实现,为什么还要用到动态代理,这个不明白了。。。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

首页/
已采纳
动态代理的作用和aop的作用?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
玄尺 2018-11-02 22: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的作用本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2023-02-15 09:15回答 4 已采纳 AOP(Aspect-Oriented Programming)是一种编程范式,通过将程序分解为各个方面(Aspect),然后再将各个方面独立开来进行编程,最后将它们合并到一起,从而实现代码的重用和降
- 2018-12-13 21:08回答 1 已采纳 No default constructor found
- 2017-03-22 21:39回答 1 已采纳 代理对象就是本身不是包含实际功能的对象,它就是一个传声筒,它调用被代理的对象,并且把返回结果再传给调用代理对象的对象。被代理对象就是实际拥有功能调用的对象。
- 2023-03-30 00:24小王不是程序员的博客 动态代理和AOP是Java编程中非常重要的概念。动态代理可以用于实现透明的远程调用、基于接口的框架、面向切面编程等功能;AOP可以用于实现日志记录、事务管理、权限控制等功能。在实际开发中,我们通常会使用AOP框架...
- 2012-11-24 09:28回答 2 已采纳 你应该获取accountProxy 而不是 account 进行测试
- 2016-12-07 23:51回答 5 已采纳 spring中的aop是基于动态代理来完成的,spring中有两种模式来实现动态代理,一种是jdk的动态代理,一种是cglib的动态代理方式,具体的区别可以自行百度
- 2022-04-28 10:05回答 2 已采纳 具体顺序忘了,好像是事务先执行,可以通过Ordered接口配置优先级
- 2021-01-19 18:13Spring AOP 的本质其实就是实现了动态代理,这个和Aspectj不一样,AspectJ 是直接修改你的字节码 完成的 代理模式其实很简单 主要包括 接口+真实的实现类+代理类 在真实类的实例化的时候 使用代理类,所以需要 ...
- 2022-12-13 12:07回答 1 已采纳 切面应该使用 接口类型或者父类类型 ,而不是实现类
- 2018-10-09 05:13回答 1 已采纳 这不就是自动切换吗?它判断目标对象是否实现了接口,实现了就用JDK没实现就用cglib,这不正是自动切换吗?你是不是有误解
- 2020-12-17 02:27回答 4 已采纳 因为你的当前类没有被代理,在aop进入切面方法的时候,有一个aop的拦截器(DynamicAdvisedInterceptor)会为这个线程设置当前的代理类。注意我的用词,”为这个线程“!也就是Aop
- 2024-08-08 23:00Seal^_^的博客 面向切面编程(AOP)通过分离横切关注点来增强代码的可维护性和可重用性。AOP 的实现方式主要分为静态代理和动态代理。
- 2024-12-27 10:57意疏的博客 Java中的JDK动态代理是一种通过反射机制生成代理对象的技术,使得我们能够在运行时动态地创建某个接口的代理类,而无需手动编写实现类。JDK动态代理通常用于横切关注点(如日志、事务管理、安全性等)在方法调用前后...
- 2022-07-06 13:02青柠果的博客 2.1.1 MathService接口类2.1.2 MathServiceImpl实现接口类2.1.3 ProxyFactory动态代理工厂2.1.4 测试类2.2 cglib动态代理 2.2.1 MathServiceImpl类2.2.2 ProxyFactory动态代理工厂2.2.3 测试类3.AOP动态代理3.1 添加...
- 2021-10-24 14:53Ezio的学习之旅的博客 另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制 ...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司