AspectJ有什么好处?[已关闭]

2022-09-01 00:05:59

首先让我注意,我使用AspectJ,我喜欢它,但我还能用它做什么。

我知道AspectJ可以/用于日志记录。在某些情况下,它用于事务控制 - 主要与注释一起实现。AspectJ也可以用来用(代码生成的)方法来增强类,就像Spring Roo一样。

但我相信AspectJ和AOP一般可以用于更多:日志记录,事务控制和模拟分部类。

那么AspectJ和AOP还有其他有用的用例吗?


答案 1
  • 权限检查
  • 耗时过长的中断操作
  • 在单独的线程中运行操作,甚至在其他计算机上的不同进程或事件的上下文中运行操作
  • 监测
  • 调用前准备任何数据/环境,调用后处理结果
  • 打开/关闭资源

编辑

虽然自从我给出这个答案以来已经过去了很多年,但我决定添加以下内容以使答案更加完整。

  • 安全检查。
  • 修复了无法更改的 API 的错误行为或行为。例如,在某些情况下返回但应返回 的布尔方法。您可以使用AspectJ解决此问题。falsetrue

答案 2

维基百科条目为您提供了更多示例(但不是很多)。通常,面向方面的编程应该仅用于实现简单的行为,这些行为不是类的核心关注点的一部分,并且是不同类的共同点。一旦你开始在你的方面放太多的逻辑,代码就会变得非常不可读。

您建议的方面(日志记录,事务等)是最常用的。我也会增加安全性。


推荐