为什么在 Spring 中使用 AOP 进行事务管理?

Why to use AOP for transaction management in Spring?

我正在学习 AOP 并了解到这对关注点分离很有用,例如 loggingtransaction managementsecurity

到目前为止很高兴知道 AOP

现在,我在 Spring 框架中阅读了有关 Spring 事务管理 的内容,我们可以使用注释 @Transactional.

正是这一点让我感到困惑为什么我们应该使用 AOP 我们必须在其中创建 Aspects 而不是使用 Spring 提供的注释。

例如:

@Transactional
public void dataAccessTrans() {

}

既然Spring已经具备了交易相关的功能,那我们为什么要用AOP来做交易管理呢?

如果我们使用 AOP,那么我们是否不必创建 Aspect 和创建 advice 来作用于该方法; 这不是让我们做手工工作吗,而不是通过 spring 框架自己的注释来处理它。

谁能帮我理解一下这个我没看清楚的地方

Spring依赖AOP实现声明式事务。

The Spring Framework’s declarative transaction management is made possible with Spring aspect-oriented programming (AOP), although, as the transactional aspects code comes with the Spring Framework distribution and may be used in a boilerplate fashion, AOP concepts do not generally have to be understood to make effective use of this code.

因此,当您使用 @Transactional 注释时:

@Transactional
public void dataAccessTrans() {
  ...
}

你间接使用了 AOP。
所以在大多数情况下,您永远不需要声明任何自定义方面来处理事务管理。