@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters={@ComponentScan.Filter(type=CUSTOM,classes=TypeExcludeFilter.class),}) public @interface SpringBootApplication
configuration class that declares one or more
 @Bean methods and also triggers auto-configuration and component scanning. This is a convenience
 annotation that is equivalent to declaring @SpringBootConfiguration,
 @EnableAutoConfiguration and @ComponentScan.| Modifier and Type | Optional Element and Description | 
|---|---|
| Class<?>[] | excludeExclude specific auto-configuration classes such that they will never be applied. | 
| String[] | excludeNameExclude specific auto-configuration class names such that they will never be
 applied. | 
| Class<? extends BeanNameGenerator> | nameGeneratorThe  BeanNameGeneratorclass to be used for naming detected components
 within the Spring container. | 
| boolean | proxyBeanMethodsSpecify whether  @Beanmethods should get proxied in order to enforce
 bean lifecycle behavior, e.g. | 
| Class<?>[] | scanBasePackageClassesType-safe alternative to  scanBasePackages()for specifying the packages to
 scan for annotated components. | 
| String[] | scanBasePackagesBase packages to scan for annotated components. | 
@AliasFor(annotation=EnableAutoConfiguration.class) public abstract Class<?>[] exclude
@AliasFor(annotation=EnableAutoConfiguration.class) public abstract String[] excludeName
@AliasFor(annotation=org.springframework.context.annotation.ComponentScan.class, attribute="basePackages") public abstract String[] scanBasePackages
scanBasePackageClasses()
 for a type-safe alternative to String-based package names.
 
 Note: this setting is an alias for
 @ComponentScan only. It has no effect on @Entity
 scanning or Spring Data Repository scanning. For those you should add
 @EntityScan and
 @Enable...Repositories annotations.
@AliasFor(annotation=org.springframework.context.annotation.ComponentScan.class, attribute="basePackageClasses") public abstract Class<?>[] scanBasePackageClasses
scanBasePackages() for specifying the packages to
 scan for annotated components. The package of each class specified will be scanned.
 Consider creating a special no-op marker class or interface in each package that serves no purpose other than being referenced by this attribute.
 Note: this setting is an alias for
 @ComponentScan only. It has no effect on @Entity
 scanning or Spring Data Repository scanning. For those you should add
 @EntityScan and
 @Enable...Repositories annotations.
@AliasFor(annotation=org.springframework.context.annotation.ComponentScan.class, attribute="nameGenerator") public abstract Class<? extends BeanNameGenerator> nameGenerator
BeanNameGenerator class to be used for naming detected components
 within the Spring container.
 
 The default value of the BeanNameGenerator interface itself indicates that
 the scanner used to process this @SpringBootApplication annotation should
 use its inherited bean name generator, e.g. the default
 AnnotationBeanNameGenerator or any custom instance supplied to the
 application context at bootstrap time.
BeanNameGenerator to useSpringApplication.setBeanNameGenerator(BeanNameGenerator)@AliasFor(annotation=org.springframework.context.annotation.Configuration.class) public abstract boolean proxyBeanMethods
@Bean methods should get proxied in order to enforce
 bean lifecycle behavior, e.g. to return shared singleton bean instances even in
 case of direct @Bean method calls in user code. This feature requires
 method interception, implemented through a runtime-generated CGLIB subclass which
 comes with limitations such as the configuration class and its methods not being
 allowed to declare final.
 
 The default is true, allowing for 'inter-bean references' within the
 configuration class as well as for external calls to this configuration's
 @Bean methods, e.g. from another configuration class. If this is not needed
 since each of this particular configuration's @Bean methods is
 self-contained and designed as a plain factory method for container use, switch
 this flag to false in order to avoid CGLIB subclass processing.
 
 Turning off bean method interception effectively processes @Bean methods
 individually like when declared on non-@Configuration classes, a.k.a.
 "@Bean Lite Mode" (see @Bean's javadoc). It is therefore behaviorally
 equivalent to removing the @Configuration stereotype.
@Bean methods