anchor.diff:  Auto-configuration can be associated to a "`starter`" that provides the auto-configuration code as well as the typical libraries that you would use with it.
   We first cover what you need to know to build your own auto-configuration and then we move on to the <<features#features.developing-auto-configuration.custom-starter,typical steps required to create a custom starter>>.
   
  -TIP: A https://github.com/snicoll-demos/spring-boot-master-auto-configuration[demo project] is available to showcase how you can create a starter step-by-step.
  -
   
   
   [[features.developing-auto-configuration.understanding-auto-configured-beans]]
   === Understanding Auto-configured Beans
  -Under the hood, auto-configuration is implemented with the `@AutoConfiguration` annotation.
  +Classes that implement auto-configuration are annotated with `@AutoConfiguration`.
   This annotation itself is meta-annotated with `@Configuration`, making auto-configurations standard `@Configuration` classes.
   Additional `@Conditional` annotations are used to constrain when the auto-configuration should apply.
   Usually, auto-configuration classes use `@ConditionalOnClass` and `@ConditionalOnMissingBean` annotations.
   This ensures that auto-configuration applies only when relevant classes are found and when you have not declared your own `@Configuration`.
   
  -You can browse the source code of {spring-boot-autoconfigure-module-code}[`spring-boot-autoconfigure`] to see the `@Configuration` classes that Spring provides (see the {spring-boot-code}/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports[`META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports`] file).
  +You can browse the source code of {spring-boot-autoconfigure-module-code}[`spring-boot-autoconfigure`] to see the `@AutoConfiguration` classes that Spring provides (see the {spring-boot-code}/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports[`META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports`] file).
   
   
   
  
positive.code: 	</project>
  ----
  
  With Gradle 4.5 and earlier, the dependency should be declared in the `compileOnly` configuration, as shown in the following example:
  
  [source,gradle,indent=0,subs="verbatim"]
  ----
  	dependencies {
  		compileOnly "org.springframework.boot:spring-boot-autoconfigure-processor"
  	}
  ----
  
  With Gradle 4.6 and later, the dependency should be declared in the `annotationProcessor` configuration, as shown in the following example:
  
  [source,gradle,indent=0,subs="verbatim"]
  ----
  
negative.code: === Locating Auto-configuration Candidates
  
  Spring Boot checks for the presence of a `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` file within your published jar.
  The file should list your configuration classes, with one class name per line, as shown in the following example:
  
  [indent=0]
  ----
  