org.springframework.context.annotation

## Annotation Type Profile

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

  Indicates that a component is eligible for registration when one or more specified profiles are active.

  A profile is a named logical grouping that may be activated programmatically via `ConfigurableEnvironment.setActiveProfiles(java.lang.String...)` or declaratively through setting the `spring.profiles.active` property, usually through JVM system properties, as an environment variable, or for web applications as a Servlet context parameter in `web.xml`.

  The `@Profile` annotation may be used in any of the following ways:

  - as a type-level annotation on any class directly or indirectly annotated with `@Component`, including `@Configuration` classes
  - as a meta-annotation, for the purpose of composing custom stereotype annotations
  - as a method-level annotation on any `@Bean` method

  If a `@Configuration` class is marked with `@Profile`, all of the `@Bean` methods and `@Import` annotations associated with that class will be bypassed unless one or more of the specified profiles are active. This is very similar to the behavior in Spring XML: if the `profile` attribute of the `beans` element is supplied e.g., `<beans profile="p1,p2">`, the `beans` element will not be parsed unless profiles 'p1' and/or 'p2' have been activated. Likewise, if a `@Component` or `@Configuration` class is marked with `@Profile({"p1", "p2"})`, that class will not be registered/processed unless profiles 'p1' and/or 'p2' have been activated.

  If a given profile is prefixed with the NOT operator (`!`), the annotated will be registered if the profile is not active. e.g., for `@Profile({"p1", "!p2"})`, registration will occur if profile 'p1' is active or if profile 'p2' is not active.

  If the `@Profile` annotation is omitted, registration will occur, regardless of which (if any) profiles are active.

  When defining Spring beans via XML, the `"profile"` attribute of the `<beans>` element may be used. See the documentation in `spring-beans` XSD (version 3.1 or greater) for details.

  Since:
    3.1
  Author:
    Chris Beams, Phillip Webb
  See Also:
    `ConfigurableEnvironment.setActiveProfiles(java.lang.String...)`, `ConfigurableEnvironment.setDefaultProfiles(java.lang.String...)`, `AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME`, `AbstractEnvironment.DEFAULT_PROFILES_PROPERTY_NAME`

- - ### Required Element Summary

    Required Elements
    Modifier and Type | Required Element and Description
    --- | ---
    `String[]` | `value` The set of profiles for which the annotated component should be registered.

- - ### Element Detail

    - #### value

          public abstract String[] value

      The set of profiles for which the annotated component should be registered.