Spring boot auto configuration scans the classpath, finds the libraries in the classpath and then attempt to guess the best configuration for them, and finally configure all such beans.
Auto-configuration tries to be as intelligent as possible and will back-away as we define more of our own custom configuration. It is always applied after user-defined beans have been registered.
Auto-configuration works with help of @Conditional annotations such as @ConditionalOnBean
and @ConditionalOnClass
.
For example, look at AopAutoConfiguration class.
If class path scanning finds EnableAspectJAutoProxy, Aspect, Advice and AnnotatedElement classes and spring.aop.auto=false is not present in properties file then Spring boot will configure the Spring AOP module for us.
@Configuration @ConditionalOnClass ({ EnableAspectJAutoProxy. class , Aspect. class , Advice. class , AnnotatedElement. class }) @ConditionalOnProperty (prefix = "spring.aop" , name = "auto" , havingValue = "true" , matchIfMissing = true ) public class AopAutoConfiguration { //code } |