Class CountedAspect

java.lang.Object
io.micrometer.core.aop.CountedAspect

@NonNullApi public class CountedAspect extends Object
Aspect responsible for intercepting all methods annotated with the Counted annotation and record a few counter metrics about their execution status.
Since:
1.2.0
See Also:
  • Field Details

  • Constructor Details

    • CountedAspect

      public CountedAspect(MeterRegistry meterRegistry)
      Construct a new aspect with the given meterRegistry along with a default tags provider.
      Parameters:
      meterRegistry - Where we're going register metrics.
    • CountedAspect

      public CountedAspect(MeterRegistry meterRegistry, Function<org.aspectj.lang.ProceedingJoinPoint,Iterable<Tag>> tagsBasedOnJoinPoint)
      Constructs a new aspect with the given meterRegistry and tags provider function.
      Parameters:
      meterRegistry - Where we're going register metrics.
      tagsBasedOnJoinPoint - A function to generate tags given a join point.
  • Method Details

    • interceptAndRecord

      public Object interceptAndRecord(org.aspectj.lang.ProceedingJoinPoint pjp, Counted counted) throws Throwable
      Intercept methods annotated with the Counted annotation and expose a few counters about their execution status. By default, this aspect records both failed and successful attempts. If the Counted.recordFailuresOnly() is set to true, then the aspect would record only failed attempts. In case of a failure, the aspect tags the counter with the simple name of the thrown exception.

      When the annotated method returns a CompletionStage or any of its subclasses, the counters will be incremented only when the CompletionStage is completed. If completed exceptionally a failure is recorded, otherwise if Counted.recordFailuresOnly() is set to false, a success is recorded.

      Parameters:
      pjp - Encapsulates some information about the intercepted area.
      counted - The annotation.
      Returns:
      Whatever the intercepted method returns.
      Throws:
      Throwable - When the intercepted method throws one.