groovy.lang

## Annotation Type Singleton

-     @Documented
      @Retention(value=SOURCE)
      @Target(value=TYPE)
      public @interface Singleton

  Class annotation to make class singleton. Singleton can be initialized in static initialization of the class or lazily (on first access) To make singleton lazy it is enough to use `@Singleton(lazy=true)` Lazy singletons implemented with double check locking and volatile field

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `boolean` | `lazy`
    `java.lang.String` | `property`

- - ### Element Detail

    - #### lazy

          public abstract boolean lazy

      Returns:
        if this singleton should be lazy
      Default:
        false

    - #### property

          public abstract java.lang.String property

      Returns:
        the singleton property name
      Default:
        "instance"