public abstract @interface

Profile

implements Annotation
org.springframework.context.annotation.Profile

Class Overview

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

A profile is a named logical grouping that may be activated programatically via setActiveProfiles(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 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-3.1.xsd for details.

Summary

[Expand]
Inherited Methods
From interface java.lang.annotation.Annotation