注解@SpringBootApplication解释
@SpringBootApplication
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
// spring-context下的annotation 用来扫描对应指定的类
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
}
官方解释
表示类提供Spring Boot应用程序@Configuration。 可以用作Spring标准@Configuration注释的替代方法,以便可以自动找到配置。
应用程序应该只包含一个@SpringBootConfiguration,大多数惯用的Spring Boot应用程序将从@SpringBootApplication继承它。
@EnableAutoConfiguration
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
}
官方解释
启用Spring Application Context的自动配置,尝试猜测和配置需要的bean。自动配置类通常基于类路径以及定义的bean。使用@EnableAutoConfiguration
注释的类的包(通常通过@SpringBootApplication)具有特定的意义,通常用作“默认”。例如,在扫描@Entity类时将使用它。通常建议您在根包中放置@EnableAutoConfiguration
,以便可以搜索所有子包和类。
自动配置类是常规的Spring配置bean。它们使用SpringFactoriesLoader
机制定位(键入此类)。通常,自动配置bean是@Conditional
bean(最常使用@ConditionalOnClass
和@ConditionalOnMissingBean
注释)。
@AutoConfigurationPackage
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {
}
官方解释
指示包含带注释的类的包应使用AutoConfigurationPackages
注册。
AutoConfigurationImportSelector
public class AutoConfigurationImportSelector
implements DeferredImportSelector, BeanClassLoaderAware, ResourceLoaderAware,
BeanFactoryAware, EnvironmentAware, Ordered
其中接口DeferredImportSelector
是spring-context
下的annotation
定义
public interface DeferredImportSelector extends ImportSelector
其中@import
表示要导入的一个或多个@Configuration类。
表示在@EnableAutoConfiguration
中导入了处理类AutoConfigurationImportSelector
来处理被@EnableAutoConfiguration
修饰的类。
@SpringBootConfiguration
主要用来标识使用@SpringBootApplication