我想了解AOP在应用程序设计中有效参与的可能情况。到目前为止,我所遇到的只有:
还有别的吗?
(它不一定是Spring基于代理的AOP - 而是JBoss AOP。)
答案 0 :(得分:27)
我可以举两个使用它的例子:
在JMX中自动注册对象以进行远程管理。如果一个类使用我们的@AutoRegister
注释进行注释,我们有一个方面可以监视该类的新实例化并自动在JMX中注册它们。
审核日志记录(黄金标准AOP用例)。它有点粗糙,但一般的方法是注释代表一些可审计行为的方法。结合Spring Security之类的东西,我们可以很好地了解:
答案 1 :(得分:7)
要了解AOP在适用性方面的涵盖范围,我建议您阅读本书Aspect-Oriented-Software-Development-Use-Cases。本书详细阐述了使用AOP的功能和非功能需求的用例。之后,您将看到这些方面可用于比日志记录,跟踪,安全性等更多的要求。
答案 2 :(得分:4)
除了您列出的所有内容之外,AOP的一个有效用途是验证。验证用户输入或业务对象。
您必须查看的相关文章。
答案 3 :(得分:4)
方法级缓存,如果您的方法是无状态的(我的意思是在使用相同的参数值重复调用时返回相同的值)。这在DAO方法中更有效,因为它可以避免数据库命中。
答案 4 :(得分:4)
答案 5 :(得分:3)
答案 6 :(得分:3)
我们将其用于软件许可证管理,即仅在计算机安装了某些特定许可证时才允许软件运行。它与您列出的用途没有什么不同,因为它是一种安全检查形式。
我发布了一篇描述实际实施的博客文章here
答案 7 :(得分:1)
我还会推荐以下方面:
使用Spring和tcServer(开发人员),您可以轻松地监视所有的Spring bean @Component注释。您可以看到使用的时间,输入和返回数据,包括例外。
答案 8 :(得分:1)
INotifyPropertyChanged和类似的恐怖。
基本上只要有代码看起来像这样 - 使用方面就可以了。
答案 9 :(得分:1)
代码合同的运行时检查。 Code Contracts for .NET使用AOP
运行时检查。我们的二进制重写器通过注入合同来修改程序,这些合同在程序执行过程中被检查。
答案 10 :(得分:0)
我们使用AspectJ来完成AOP。除上述用例之外的用例如下: