org.springframework.context.annotation

## Annotation Type Profile

    @Retention(value=RUNTIME)
    @Target(value=TYPE)
    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

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 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
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
`String[]` `value` The set of profiles for which this component should be registered.

### Element Detail

#### value

    public abstract String[] value

The set of profiles for which this component should be registered.