Spring Framework

Annotation Type Profile

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:

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.

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

Element Detail


public abstract java.lang.String[] value
The set of profiles for which this component should be registered.

Spring Framework