AutoConfiguration Type — spring-boot Architecture
Architecture documentation for the AutoConfiguration type/interface in AutoConfiguration.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfiguration.java lines 55–125
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration(proxyBeanMethods = false)
@AutoConfigureBefore
@AutoConfigureAfter
public @interface AutoConfiguration {
/**
* Explicitly specify the name of the Spring bean definition associated with the
* {@code @AutoConfiguration} class. If left unspecified (the common case), a bean
* name will be automatically generated.
* <p>
* The custom name applies only if the {@code @AutoConfiguration} class is picked up
* through component scanning or supplied directly to an
* {@link AnnotationConfigApplicationContext}. If the {@code @AutoConfiguration} class
* is registered as a traditional XML bean definition, the name/id of the bean element
* will take precedence.
* @return the explicit component name, if any (or empty String otherwise)
* @see AnnotationBeanNameGenerator
*/
@AliasFor(annotation = Configuration.class)
String value() default "";
/**
* The auto-configuration classes that should have not yet been applied.
* <p>
* Since this annotation is parsed by loading class bytecode, it is safe to specify
* classes here that may ultimately not be on the classpath, but only if this
* annotation is directly on the affected component and <b>not</b> if this annotation
* is used as a composed, meta-annotation. In order to use this annotation as a
* meta-annotation, only use the {@link #beforeName} attribute.
* @return the classes
*/
@AliasFor(annotation = AutoConfigureBefore.class, attribute = "value")
Class<?>[] before() default {};
/**
* The names of the auto-configuration classes that should have not yet been applied.
* In the unusual case that an auto-configuration class is not a top-level class, its
* name should use {@code $} to separate it from its containing class, for example
* {@code com.example.Outer$NestedAutoConfiguration}.
* @return the class names
*/
@AliasFor(annotation = AutoConfigureBefore.class, attribute = "name")
String[] beforeName() default {};
/**
* The auto-configuration classes that should have already been applied.
* <p>
* Since this annotation is parsed by loading class bytecode, it is safe to specify
* classes here that may ultimately not be on the classpath, but only if this
* annotation is directly on the affected component and <b>not</b> if this annotation
* is used as a composed, meta-annotation. In order to use this annotation as a
* meta-annotation, only use the {@link #afterName} attribute.
* @return the classes
*/
@AliasFor(annotation = AutoConfigureAfter.class, attribute = "value")
Class<?>[] after() default {};
/**
* The names of the auto-configuration classes that should have already been applied.
* In the unusual case that an auto-configuration class is not a top-level class, its
* class name should use {@code $} to separate it from its containing class, for
* example {@code com.example.Outer$NestedAutoConfiguration}.
* @return the class names
*/
@AliasFor(annotation = AutoConfigureAfter.class, attribute = "name")
String[] afterName() default {};
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free