可能的AOP用例有哪些?

Ond*_*žka 53 java aop jboss spring use-case

我想想一下AOP在应用程序设计中有效参与的可能案例.到目前为止,我所遇到的只有:

  • 日志相关
  • 安全检查
  • 交易管理
  • 调整遗留应用程序

还要别的吗?

(它不一定是Spring基于代理的AOP - 而是JBoss AOP.)

(相关问题)

Kev*_*vin 29

我可以举两个例子来说明我们使用它:

  • 在JMX中自动注册对象以进行远程管理.如果一个类使用我们的@AutoRegister注释进行注释,那么我们有一个方面可以监视该类的新实例化并自动在JMX中注册它们.

  • 审计日志记录(黄金标准AOP用例).它有点粗糙,但一般的方法是注释代表一些可审计行为的方法.结合Spring Security之类的东西,我们可以很好地了解:

    • 谁是用户
    • 他们调用什么方法
    • 他们提供什么数据
    • 该方法被调用的时间
    • 调用是否成功(即,是否抛出异常)


Mic*_*les 11

  • 异常处理:不需要重复 try ... catch、catch、catch 等可怕的列表——也意味着异常处理保证是一致的。
  • 性能监控:非常有用,因为使用方面是非侵入性的,可以在事后完成,然后在不再需要时关闭。

哇...... 10 年前 - AOP 没有太多......这里还有一些

  • 能够自定义您无法访问其构造函数的对象(例如 jpa 实体)
  • 实现安全规则(安全说不允许用户调用这个方法——AOP 可以实现)
  • 事务管理器(开始、提交、回滚)
  • 缓存 - 想要缓存方法的结果而不是再次调用它


Ped*_*rdi 7

要了解AOP在适用性方面的覆盖范围,我建议您阅读" 面向方面 - 软件 - 开发 - 使用案例"一书.本书详细阐述了使用AOP的功能和非功能需求的用例.之后,您将看到这些方面可用于记录,跟踪,安全性等更多要求.


Adi*_*Adi 6

方法级缓存,如果您的方法是无状态的(我的意思是使用相同的参数值重复调用时返回相同的值)。这在 DAO 方法的情况下更有效,因为它避免了数据库命中。


ewe*_*nli 5

  • 读/写锁。我没有复制相同的代码片段,而是使用一个方面来定义需要读锁或独占锁的方法。


Car*_*bés 5

我们将其用于软件许可管理,即仅当计算机安装了某些特定许可时才允许软件运行。它与您列出的用途没有什么不同,因为它是一种安全检查形式。

在这里发表了一篇描述实际实现的博客文章