Class TraceAspect

java.lang.Object
io.github.xezzon.zeroweb.common.otlp.TraceAspect

@Component public class TraceAspect extends Object
此切面用于通过 OpenTelemetry 为服务方法自动添加分布式追踪。 它拦截所有被 Spring @Service 注解的类中的方法, 并为每个方法创建一个新的 Span,记录方法的执行信息,包括命名空间、类名和方法名。 异常发生时,Span 会记录异常信息,并在方法执行结束时(无论成功或失败)关闭 Span。
Author:
xezzon
  • Constructor Details

    • TraceAspect

      public TraceAspect()
  • Method Details

    • traceServiceMethods

      public Object traceServiceMethods(org.aspectj.lang.ProceedingJoinPoint pjp) throws Throwable

      拦截所有被 @Service 注解的类中的方法, 并为这些方法的执行添加 OpenTelemetry 追踪。

      每个被追踪的方法将创建一个新的 Span。Span 的名称由类名和方法名组合而成, 并设置 code.namespacecode.function 属性。 如果方法执行成功,Span 状态设置为 StatusCode.OK。 如果方法执行抛出异常,异常信息会被记录到 Span 中,然后异常会被重新抛出。 无论方法执行结果如何,Span 都会在方法执行结束时关闭。

      Parameters:
      pjp - 封装了被拦截方法的执行点信息,通过它可以调用目标方法。
      Returns:
      目标方法的执行结果。
      Throws:
      Throwable - 如果目标方法抛出任何异常,此异常会被重新抛出。