为什么在 Spring 中使用 AOP 进行事务管理?
Why to use AOP for transaction management in Spring?
我正在学习 AOP
并了解到这对关注点分离很有用,例如 logging
、transaction management
、security
等
到目前为止很高兴知道 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。
所以在大多数情况下,您永远不需要声明任何自定义方面来处理事务管理。
我正在学习 AOP
并了解到这对关注点分离很有用,例如 logging
、transaction management
、security
等
到目前为止很高兴知道 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。
所以在大多数情况下,您永远不需要声明任何自定义方面来处理事务管理。