SpringBootApplication (Spring Boot 4.0.7 API) JavaScript is disabled on your browser.     Skip navigation links Overview Class Use Tree Deprecated Index Search Help org.springframework.boot.autoconfigure SpringBootApplication Contents  Description Optional Element Summary Element Details exclude excludeName scanBasePackages scanBasePackageClasses nameGenerator proxyBeanMethods Hide sidebar  Show sidebar Annotation Interface SpringBootApplication @Target(TYPE) @Retention(RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters={@Filter(type=CUSTOM,classes=TypeExcludeFilter.class),}) public @interface SpringBootApplication Indicates a 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. Since: 1.2.0 Author: Phillip Webb, Stephane Nicoll, Andy Wilkinson Optional Element Summary Optional Elements Modifier and Type Optional Element Description Class<?>[] exclude Exclude specific auto-configuration classes such that they will never be applied. String[] excludeName Exclude specific auto-configuration class names such that they will never be applied. Class<? extends BeanNameGenerator> nameGenerator The BeanNameGenerator class to be used for naming detected components within the Spring container. boolean proxyBeanMethods Specify whether @Bean methods should get proxied in order to enforce bean lifecycle behavior, e.g. Class<?>[] scanBasePackageClasses Type-safe alternative to scanBasePackages() for specifying the packages to scan for annotated components. String[] scanBasePackages Base packages to scan for annotated components. Element Details exclude @AliasFor(annotation=EnableAutoConfiguration.class) Class<?>[] exclude Exclude specific auto-configuration classes such that they will never be applied. 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 not if this annotation is used as a composed, meta-annotation. In order to use this annotation as a meta-annotation, only use the excludeName() attribute. Returns: the classes to exclude Default: {} excludeName @AliasFor(annotation=EnableAutoConfiguration.class) String[] excludeName Exclude specific auto-configuration class names such that they will never be applied. Returns: the class names to exclude Since: 1.3.0 Default: {} scanBasePackages @AliasFor(annotation=ComponentScan.class, attribute="basePackages") String[] scanBasePackages Base packages to scan for annotated components. Use 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. Returns: base packages to scan Since: 1.3.0 Default: {} scanBasePackageClasses @AliasFor(annotation=ComponentScan.class, attribute="basePackageClasses") Class<?>[] scanBasePackageClasses Type-safe alternative to 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. Returns: base packages to scan Since: 1.3.0 Default: {} nameGenerator @AliasFor(annotation=ComponentScan.class, attribute="nameGenerator") Class<? extends BeanNameGenerator> nameGenerator The 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. Returns: BeanNameGenerator to use Since: 2.3.0 See Also: SpringApplication.setBeanNameGenerator(BeanNameGenerator) Default: org.springframework.beans.factory.support.BeanNameGenerator.class proxyBeanMethods @AliasFor(annotation=Configuration.class) boolean proxyBeanMethods Specify whether @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. Returns: whether to proxy @Bean methods Since: 2.2 Default: true