在春季项目中AOP最常见的用途是什么

在审查了AOP模式后,我对我在春季项目中如何使用它以及如何使用它的方式感到不知所措。

我想将它用作所有财务业务逻辑的审计日志系统。 它似乎很容易整合。 但我想听听你对此的看法。

问题是 – 对于这种模式,我应该考虑哪些其他用途? 我不介意重构我目前使用AOP的逻辑,只要它有好处。

最常见的用法可能是使用@Transactional进行声明式事务处理。

最常见的用法是您的应用程序具有交叉问题,即将要在多个类/层中编写的逻辑或代码。

这可能会根据您的需求而有所不同。 一些非常常见的例子可能是:

  1. 交易管理
  2. 记录
  3. exception处理(特别是当您可能希望有详细的跟踪或有一些从exception中恢复的计划时)
  4. 安全方面
  5. 仪表

希望有所帮助。

除了Axel提到的日志记录/审计和声明式事务处理之外,我想说AOP的另一种用法是作为请求拦截器。 例如,假设您需要拦截服务器的所有请求,以便您可以对其执行某些操作(可能是为了跟踪哪个应用程序正在向其他应用程序或什么数据库发送什么请求等)。

您可以使用AOP来解决安全问题,例如允许/禁止方法访问。 aop的另一个用途是测试您的应用程序性能。

使用AOP进行审计日志记录是AOP的完美有效使用。 您可以关闭它进行测试,并根据生产中的需求变化进行更改。

在这种情况下唯一的缺点是,如果您计划通过SQL执行审计日志。 将这种审计作为触发器直接在DB中实现可能更有效。

作为答案与@Axel所说的略有不同,使用它来自动拦截所有数据访问调用并适当地应用事务是非常惊人的。 我已经设置了实现对我的dao包的所有调用,这些调用在事务中不以“get”开头,然后在以“get”开头的方法中执行的任何操作都被视为只读。 这很棒,因为除了初始设置,我不必担心它,只需遵循命名约定。