代码之家  ›  专栏  ›  技术社区  ›  Gab

Spring Transaction-记录新事务的方法执行时间

  •  0
  • Gab  · 技术社区  · 8 年前

    日志聚合在一个ELK堆栈中,我们希望使分析可视化,问题是堆栈中的所有子类也被跟踪,我们有多个跟踪,每个工作单元有多个方法名称。

    我只想跟踪每个工作单元的入口点方法,即触发新事务的每个方法(而不是加入现有事务的方法)。

    有没有一种方法可以在不重写spring TransactionInterceptor的情况下做到这一点?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Gab    8 年前

    如果您需要一个只使用AspectJ的简单解决方案,以下内容可能适用于您。

    transactionalMethodExecution :

    pointcut transactionalMethodExecution(): execution(@org.springframework.transaction.annotation.Transactional * *(..));;
    

    可以排除所有嵌套 事务处理方法执行 使用 cflowbelow

    transactionalMethodExecution() && !cflowbelow(transactionalMethodExecution())
    

    从上的文档

    cflowbelow(Pointcut)

    在任何连接点的控制流中选择每个连接点 P Pointcut P