@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Configuration(proxyBeanMethods=false) @AutoConfigureBefore @AutoConfigureAfter public @interface AutoConfiguration
@Configuration
with the exception that
Configuration#proxyBeanMethods() proxyBeanMethods is always false
.
They are located using ImportCandidates
and the SpringFactoriesLoader
mechanism (keyed against EnableAutoConfiguration
).
Generally auto-configuration classes are marked as @Conditional
(most often using @ConditionalOnClass
and
@ConditionalOnMissingBean
annotations).
EnableAutoConfiguration
,
AutoConfigureBefore
,
AutoConfigureAfter
,
Conditional
,
ConditionalOnClass
,
ConditionalOnMissingBean
Modifier and Type | Optional Element and Description |
---|---|
Class<?>[] |
after
The auto-configure classes that should have already been applied.
|
String[] |
afterName
The names of the auto-configure classes that should have already been applied.
|
Class<?>[] |
before
The auto-configure classes that should have not yet been applied.
|
String[] |
beforeName
The names of the auto-configure classes that should have not yet been applied.
|
String |
value
Explicitly specify the name of the Spring bean definition associated with the
@AutoConfiguration class. |
@AliasFor(annotation=org.springframework.context.annotation.Configuration.class) public abstract String value
@AutoConfiguration
class. If left unspecified (the common case), a bean
name will be automatically generated.
The custom name applies only if the @AutoConfiguration
class is picked up
via component scanning or supplied directly to an
AnnotationConfigApplicationContext
. If the @AutoConfiguration
class
is registered as a traditional XML bean definition, the name/id of the bean element
will take precedence.
AnnotationBeanNameGenerator
@AliasFor(annotation=AutoConfigureBefore.class, attribute="value") public abstract Class<?>[] before
@AliasFor(annotation=AutoConfigureBefore.class, attribute="name") public abstract String[] beforeName
@AliasFor(annotation=AutoConfigureAfter.class, attribute="value") public abstract Class<?>[] after
@AliasFor(annotation=AutoConfigureAfter.class, attribute="name") public abstract String[] afterName