/**
* 标注主程序类,说明是一个SpringBoot应用
*/
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args){
//启动Spring应用
SpringApplication.run(HelloWorldApplication.class,args);
}
}
@SpringBootApplication:重要注解,标注在某个类上说明是Spring Boot的主配置类,Spring Boot应该运行这个类的main方法来启动Spring Boot应用。
由一系列组合注解组成:
@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}
)}
)
@SpringBootConfiguration: Spring Boot的配置类,标注在某个类上,表示是一个Spring Boor的配置类
@Configuration:配置类上来标注这个注解(配置类:配置文件,配置类也是容器中的一个组件@Component)
@EnableAutoConfiguration:开启自动配置功能,以前需要配置的东西,Spring Boot帮助自动配置,@EnableAutoConfiguration告诉Spring Boot开启自动配置功能,使得自动配置生效
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {};
}
@AutoConfigurationPackage:自动配置包 ,==将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里的所有组件扫描到Spring容器==
@Import({Registrar.class}):Spring底层注解,给容器中导入一个组件,导入的组件由AutoConfigurationPackages.Registrar.class;
@Import({EnableAutoConfigurationImportSelector.class}):给容器中导入组件,EnableAutoConfigurationImportSelector:导入哪些组件的选择器。将所有需要导入的组件以全类名的方式返回。组件就会被添加到容器中。会给容器中导入很多自动配置类(xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件,并配置好这些组件。有了自动配置类可以免去手动编写配置注入功能组件的工作。