Package org.eclipse.microprofile.metrics.annotation

## Annotation Type 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.

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

Optional Elements
`boolean` `absolute` Denotes whether to use the absolute name or use the default given name relative to the annotated class.
`String` `description` The description of the timer.
`String` `name` The name of the timer.
`String` `scope` The scope that this Timer belongs to.
`String[]` `tags`
`String` `unit` The unit of the timer.

### Element Detail

#### name

    String name

The 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:
  `Metadata`

Default:
  {}

#### absolute

    boolean absolute

Denotes 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. If `false` (default), use the given name relative to the annotated class. When annotating a class, this must be `false`.

Default:
  false

#### description

    String description

The description of the timer.

Returns:
  The description of the timer.
See Also:
  `Metadata`

Default:
  ""

#### unit

    String unit

The unit of the timer.

Returns:
  The unit of the timer. By default, the value is `MetricUnits.NANOSECONDS`.
See Also:
  `Metadata`, `MetricUnits`

Default:
  "nanoseconds"

#### scope

    String scope

The scope that this Timer belongs to.

Returns:
  The scope this Timer belongs to. By default, the value is `MetricRegistry.APPLICATION_SCOPE`.

Default:
  "application"