为什么需要AOP?AOP可以做什么?
🕗 发布于 2024-09-23 00:03 Spring AOP
为什么需要AOP?
OOP存在的局限性
- 静态化语言中的类结构限制
1.1 类结构固定:在静态化语言(如Java)中,类的结构在编译时就被固定下来,这意味着类的字段、方法等成员一旦定义,在运行时难以动态修改。
1.2 当然我们可以通过修改字节码的方式进行修改,修改以后使用ClassLoader进行重新加载,但是这样的操作过于麻烦对程序员的要求比较高,还可能引起很多问题。
灵活性受限:虽然可以通过字节码操作来修改类结构并重新加载,但这通常较为复杂且容易出错,不适合日常开发中的频繁使用。 - 侵入性拓展的挑战
比如我们定义的API已经发布了一个版本,这个时候我们需要进行拓展不能直接修改标准的API会影响到现有的使用。我们不得不通过继承或者组合发方式来拓展功能。
2.1 继承的局限性:
类层次复杂:过度使用继承可能导致类层次过于复杂,维护困难。
多继承限制:Java不支持多重继承,这限制了某些设计模式的应用。
2.2 组合的局限性:
接口耦合:当通过组合来扩展功能时,如果现有类的接口设计不合理,可能会导致组合类的设计变得复杂。
依赖过多:组合可能会引入过多的依赖关系,使得系统变得难以理解和维护。
AOP 的应用场景
- 日志场景:比如log4j或logback中的MDC,可以帮助我们打印一些辅助信息,比如打印方法的执行时间。
MDC(Mapped Diagnostic Context)是一种用于区分来自不同来源日志的工具。它的本质是一个由日志框架维护的Map存储结构,应用程序可以向其中写入键值对,并被日志框架访问。 - 统计场景:比如方法执行次数,执行异常次数,数据抽样,
- 安防场景:比如熔断(Hystrix),限流和降级(Sentinel),认证和授权(Spring Security),监控(JMX)
- 性能场景:比如缓存(Spring Cache),超时控制。
原文地址:https://blog.csdn.net/qq_43259860/article/details/142384651
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!
-
计算机网络笔记001
通信网络研究的是通信终端(如电话)和内部通信问题,而计算机网络则更关注计算机之间的联网和通信,比如我们的Wi-Fi网络。分布式系统是一种建立在计算机网络之上的、 具有高度内聚性 ( Cohesiven
阅读更多2024-09-23
-
第七章 监听器
监听器的作用是被观察的对象发生某些情况时,自动触发代码的执行。监听器时GOF设计模式中,观察者模式的典型案例。观察者模式: 当被观察的对象发生某些改变时, 观察者自动采取对应的行动的一种设计模式。在J
阅读更多2024-09-23
-
Qemu开发ARM篇-3、qemu运行uboot演示
在上一篇文章中,我们搭建了交叉编译工具链,并成功进行了uboot的交叉编译,在该篇中,我们将演示如何利用qemu运行上一篇中交叉编译的uboot程序。
阅读更多2024-09-23
-
MATLAB基于传统方法的车道线检测实现
在Canny算法中,非极大值抑制是进行边缘检测的重要步骤,简单说就是寻找像素点局部最大值,将非极大值点所对应的灰度值置为0,这样可以剔除掉许多非边缘的点,我们在霍夫空间中定义交点的最小阈值来检测线,霍
阅读更多2024-09-23
-
Qt信号和槽
参考:【Qt】信号和槽
阅读更多2024-09-23
-
docker build前耗时太长,不明所以
在构建镜像时发现明明没基础镜像没那么大,却一直在加载什么东西,直至到了一个点,搜索发现是因为Docker Client会默认发送Dockerfile同级目录下的所有文件到Dockerdaemon中,是
阅读更多2024-09-23
-
【C#生态园】从容面对.NET性能挑战:全面解析多种性能监控工具
本文将围绕六个.NET性能监控工具展开讨论,分别是MiniProfiler、Glimpse、MiniProfiler扩展库:MiniProfiler.EF、Glimpse扩展库:Glimpse.Ado
阅读更多2024-09-23
-
机器学习查漏补缺(4)
[M] What happens if we accidentally duplicate every data point in your train set or in your test set
阅读更多2024-09-23
-
软媒市场新探索:软文媒体自助发布,开启自助发稿新篇章
这种全新的营销方式,不仅极大地提高了企业的营销效率,还降低了企业的营销成本,让数字营销变得更加简单和高效。无论企业的目标受众是谁,无论企业的营销需求是什么,都能在这个平台上找到合适的媒体进行投放,实现
阅读更多2024-09-23
-
【AI创作组】Matlab简介
MATLAB是一种高性能的科学计算语言,广泛应用于工程计算、控制设计、信号处理和图形显示等领域。
阅读更多2024-09-23