Annotation Interface Timed
@Inherited
@Documented
@InterceptorBinding
@Retention(RUNTIME)
@Target({TYPE,CONSTRUCTOR,METHOD,ANNOTATION_TYPE})
public @interface Timed
An annotation for marking a method, constructor, or class as timed.
The underlying
Timer
metric aggregates timing durations and provides duration statistics,
plus throughput statistics. There is a lightweight alternative
SimpleTimer
(@SimplyTimed
) that only tracks elapsed time duration and
count. The metric will be registered in the application MetricRegistry.
Given a method annotated with @Timed like this:
@Timed(name = "fancyName")
public String fancyName(String name) {
return "Sir Captain " + name;
}
A timer with the fully qualified class name + fancyName
will be created and each time the
#fancyName(String)
method is invoked, the method's execution will be timed.
Given a class annotated with @Timed like this:
@Timed
public class TimedBean {
public void timedMethod1() {}
public void timedMethod2() {}
}
A timer for the defining class will be created for each of the constructors/methods.
Each time a constructor/method is invoked, the execution will be timed with the respective timer.
This annotation will throw an IllegalStateException if the constructor/method is invoked, but the metric no
longer exists in the MetricRegistry.-
Optional Element Summary
Modifier and TypeOptional ElementDescriptionboolean
Denotes whether to use the absolute name or use the default given name relative to the annotated class.The description of the timer.The display name of the timer.The name of the timer.boolean
Denotes if this metric instance can be reused by multiple registrations.String[]
The unit of the timer.
-
Element Details
-
name
String nameThe name of the timer.- Returns:
- The name of the timer.
- Default:
- ""
-
tags
String[] tags- Returns:
- The tags of the timer. Each
String
tag must be in the form of 'key=value'. If the input is empty or does not contain a '=' sign, the entry is ignored. - See Also:
- Default:
- {}
-
absolute
boolean absoluteDenotes whether to use the absolute name or use the default given name relative to the annotated class.- Returns:
- If
true
, use the given name as an absolute name. Iffalse
(default), use the given name relative to the annotated class. When annotating a class, this must befalse
.
- Default:
- false
-
displayName
String displayNameThe display name of the timer.- Returns:
- The display name of the timer.
- See Also:
- Default:
- ""
-
description
String descriptionThe description of the timer.- Returns:
- The description of the timer.
- See Also:
- Default:
- ""
-
unit
String unitThe unit of the timer.- Returns:
- The unit of the timer. By default, the value is
MetricUnits.NANOSECONDS
. - See Also:
- Default:
- "nanoseconds"
-
reusable
boolean reusableDenotes if this metric instance can be reused by multiple registrations.- Returns:
- false if not reusable, true otherwise
- Since:
- Metrics 1.1
- Default:
- false
-