【问题标题】:Why to use AOP for transaction management in Spring?为什么在 Spring 中使用 AOP 进行事务管理?
【发布时间】:2018-01-27 22:04:11
【问题描述】:

我正在学习 AOP 并知道这对于关注点分离很有用,例如,loggingtransaction managementsecurity 等。

到目前为止很高兴知道AOP

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

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

例如:

@Transactional
public void dataAccessTrans() {

}

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

如果我们使用AOP,那么我们不是必须创建Aspect 并创建advice 吗? 这不会让我们做手工工作,而不是由spring框架自己通过自己的注释来处理。

谁能帮我理解我无法清楚理解的这一点。

【问题讨论】:

    标签: spring transactions aop cross-cutting-concerns


    【解决方案1】:

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

    Spring框架的声明式事务管理 可以使用 Spring 面向方面的编程 (AOP),但是,如 事务方面的代码随 Spring 框架一起提供 分发并且可以以样板方式使用,AOP 概念可以 通常不必被理解为有效利用这一点 代码。

    所以当你使用@Transactional 注解时:

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

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

    【讨论】:

    • 感谢您的回答,有道理。您的回复澄清了疑问,接受您的回答,再次感谢!
    • 不客气。聪明的问题。最后你走在了正确的道路上:)
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 2011-10-18
    • 2014-11-30
    • 2018-08-21
    • 2010-10-12
    • 2011-01-02
    相关资源
    最近更新 更多