3

我正在学习AOP并开始知道这对于关注点分离很有用,例如logging,transaction managementsecurity

到目前为止很高兴知道AOP

现在,我阅读了Spring 框架中的Spring 事务管理,我们可以有注解@Transactional

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

例如:

@Transactional
public void dataAccessTrans() {

}

既然 Spring 已经有了事务相关的功能,那为什么还要用AOP它来做事务管理呢?

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

任何人都可以帮助我理解我无法清楚理解的这一点。

4

1 回答 1

4

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

Spring Framework 的声明式事务管理通过 Spring 面向方面编程 (AOP) 成为可能,尽管由于事务方面代码随 Spring Framework 发行版一起提供并且可以以样板方式使用,AOP 概念通常不必理解有效地使用此代码。

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

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

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

于 2018-01-27T14:04:11.547 回答