org.springframework.context.annotation

## Annotation Type Scope

-     @Target(value={TYPE,METHOD})
       @Retention(value=RUNTIME)
       @Documented
      public @interface Scope

  When used as a type-level annotation in conjunction with `@Component`, `@Scope` indicates the name of a scope to use for instances of the annotated type.

  When used as a method-level annotation in conjunction with `@Bean`, `@Scope` indicates the name of a scope to use for the instance returned from the method.

  NOTE: `@Scope` annotations are only introspected on the concrete bean class (for annotated components) or the factory method (for `@Bean` methods). In contrast to XML bean definitions, there is no notion of bean definition inheritance, and inheritance hierarchies at the class level are irrelevant for metadata purposes.

  In this context, scope means the lifecycle of an instance, such as `singleton`, `prototype`, and so forth. Scopes provided out of the box in Spring may be referred to using the `SCOPE_*` constants available in the `ConfigurableBeanFactory` and `WebApplicationContext` interfaces.

  To register additional custom scopes, see `CustomScopeConfigurer`.

  Since:
    2.5
  Author:
    Mark Fisher, Chris Beams, Sam Brannen
  See Also:
    `Component`, `Bean`

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `ScopedProxyMode` | `proxyMode` Specifies whether a component should be configured as a scoped proxy and if so, whether the proxy should be interface-based or subclass-based.
    `String` | `scopeName` Specifies the name of the scope to use for the annotated component/bean.
    `String` | `value` Alias for `scopeName()`.

- - ### Element Detail

    - #### value

          @AliasFor(value="scopeName")
          public abstract String value

      Alias for `scopeName()`.
      See Also:
        `scopeName()`
      Default:
        ""

  - - #### scopeName

          @AliasFor(value="value")
          public abstract String scopeName

      Specifies the name of the scope to use for the annotated component/bean.

      Defaults to an empty string (`""`) which implies `SCOPE_SINGLETON`.

      Since:
        4.2
      See Also:
        `ConfigurableBeanFactory.SCOPE_PROTOTYPE`, `ConfigurableBeanFactory.SCOPE_SINGLETON`, `WebApplicationContext.SCOPE_REQUEST`, `WebApplicationContext.SCOPE_SESSION`, `value()`
      Default:
        ""

  - - #### proxyMode

          public abstract ScopedProxyMode proxyMode

      Specifies whether a component should be configured as a scoped proxy and if so, whether the proxy should be interface-based or subclass-based.

      Defaults to `ScopedProxyMode.DEFAULT`, which typically indicates that no scoped proxy should be created unless a different default has been configured at the component-scan instruction level.

      Analogous to `<aop:scoped-proxy/>` support in Spring XML.

      See Also:
        `ScopedProxyMode`
      Default:
        org.springframework.context.annotation.ScopedProxyMode.DEFAULT