天天看點

springboot的注解@SpringBootApplication

@SpringBootApplication 是一個組合注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
           

@SpringBootConfiguration 相當于 對@Configuration的封裝 作用是将目前類标志位一個配置類

@EnableAutoConfiguration

這是一個開啟自動裝配的注解(同樣為一個組合注解)

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
           

@AutoConfigurationPackage  作用是将主程式類下的所有元件都掃描到Spring容器中 

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {
           
@Import(AutoConfigurationPackages.Registrar.class) 作用是導入AutoConfigurationPackages Registrar這個元件 Registrar元件的registerBeanDefinitions方法會得到@SpringBootApplication注解标注的類所在的包      
@Import(AutoConfigurationImportSelector.class)作用 引入AutoConfigurationImportSelector元件 這個類是ImportSelector接口的實作,其中的selectImports方法為其核心方法 加載配置檔案META-INF/spring.factories,從其中加載所有可能用到的配置類
      

這些注解解釋了springboot 如何實作自動裝配和自動掃描bean到容器的作用