@Target(value=TYPE)
@Retention(value=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.
As of Spring Framework 4.0, this annotation may be used as a meta-annotation to create custom composed annotations.
SmartContextLoader
,
MergedContextConfiguration
,
ContextConfiguration
,
ActiveProfilesResolver
,
ApplicationContext
,
Profile
Modifier and Type | Optional Element and Description |
---|---|
boolean |
inheritProfiles
Whether or not bean definition profiles from superclasses should be
inherited.
|
java.lang.String[] |
profiles
The bean definition profiles to activate.
|
java.lang.Class<? extends ActiveProfilesResolver> |
resolver
The type of
ActiveProfilesResolver to use for resolving the active
bean definition profiles programmatically. |
java.lang.String[] |
value
Alias for
profiles() . |
@AliasFor(value="profiles") public abstract java.lang.String[] value
profiles()
.
This attribute may not be used in conjunction with
profiles()
, but it may be used instead of profiles()
.
public abstract java.lang.Class<? extends ActiveProfilesResolver> resolver
ActiveProfilesResolver
to use for resolving the active
bean definition profiles programmatically.ActiveProfilesResolver
public abstract boolean inheritProfiles
The default value is true
, which means that a test
class will inherit bean definition profiles defined by a
test superclass. Specifically, the bean definition profiles for a test
class will be appended to the list of bean definition profiles
defined by a test superclass. Thus, subclasses 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.
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.
ContextConfiguration.locations()
,
ContextConfiguration.classes()
,
ContextConfiguration.inheritLocations()