Annotation Interface ActiveProfiles


@Target(TYPE) @Retention(RUNTIME) @Documented @Inherited public @interface ActiveProfiles
ActiveProfiles is a class-level annotation that is used to declare which active bean definition profiles should be used when loading an ApplicationContext for test classes.

This annotation may be used as a meta-annotation to create custom composed annotations.

As of Spring Framework 5.3, this annotation will be inherited from an enclosing test class by default. See @NestedTestConfiguration for details.

Since:
3.1
Author:
Sam Brannen
See Also:
  • Element Details

    • value

      @AliasFor("profiles") String[] value
      Alias for profiles().

      This attribute may not be used in conjunction with profiles(), but it may be used instead of profiles().

      Default:
      {}
    • profiles

      @AliasFor("value") String[] profiles
      The bean definition profiles to activate.

      This attribute may not be used in conjunction with value(), but it may be used instead of value().

      Default:
      {}
    • resolver

      Class<? extends ActiveProfilesResolver> resolver
      The type of ActiveProfilesResolver to use for resolving the active bean definition profiles programmatically.
      Since:
      4.0
      See Also:
      Default:
      org.springframework.test.context.ActiveProfilesResolver.class
    • inheritProfiles

      boolean inheritProfiles
      Whether bean definition profiles from superclasses and enclosing classes should be inherited.

      The default value is true, which means that a test class will inherit bean definition profiles defined by a test superclass or enclosing class. Specifically, the bean definition profiles for a test class will be appended to the list of bean definition profiles defined by a test superclass or enclosing class. Thus, subclasses and nested classes have the option of extending the list of bean definition profiles.

      If inheritProfiles is set to false, the bean definition profiles for the test class will shadow and effectively replace any bean definition profiles defined by a superclass or enclosing class.

      In the following example, the ApplicationContext for BaseTest will be loaded using only the "base" bean definition profile; beans defined in the "extended" profile will therefore not be loaded. In contrast, the ApplicationContext for ExtendedTest will be loaded using the "base" and "extended" bean definition profiles.

       @ActiveProfiles("base")
       @ContextConfiguration
       public class BaseTest {
           // ...
       }
      
       @ActiveProfiles("extended")
       @ContextConfiguration
       public class ExtendedTest extends BaseTest {
           // ...
       }
       

      Note: @ActiveProfiles can be used when loading an ApplicationContext from path-based resource locations or annotated classes.

      See Also:
      Default:
      true