JDK: 1.8
SpringBoot: 1.5.10.RELEASE
@SpringBootApplication 注解示例
1 | import org.springframework.boot.SpringApplication; |
@SpringBootApplicaiton
SpringBoot 应用程序标注在某个类上说明这个类是 SpringBoot 的主配置类,也称为启动类。
SpringBoot 应用程序通过执行启动类的 main
方法来启动 SpringBoot 应用程序。
@SpringBootApplication 注解详解
1 | import java.lang.annotation.Documented; |
@SpringBootApplication 是一个组合注解:
@SpringBootConfiguration :SpringBoot 应用程序的配置类注解,标注在某个类上,表示这是一个 SpringBoot 配置类
@EnableAutoConfiguration :SpringBoot 应用程序的开启自动配置注解
@SpringBootConfiguration 注解详解
1 | import java.lang.annotation.Documented; |
@SpringBootConfiguration 是一个组合注解,实际表示了 @Configutation 注解,两者实际作用相同,
只不过一个是 Spring 提供的注解,一个是 SpringBoot 提供的注解。
@EnableAutoConfiguration 注解详解
1 | import java.lang.annotation.Documented; |
@EnableAutoConfiguration 是一个组合注解:
@AutoConfigurationPackage :自动配置包
@Import({EnableAutoConfigurationImportSelector.class}) :表示想容器中导入哪些组件的选择器
@AutoConfigurationPackage 注解详解
1 | import java.lang.annotation.Documented; |
@AutoConfigurationPackage 注解商标注了 @Import({Registrar.class})
@Import 是 Spring 提供的注解,表示向容器中导入一个组件,这里就是表示向容器中导入 Registrar.class 类,
而 Registrar.class 类的作用就是得到注解标注类所在的包路径并注册
本质作用是将启动类所在包及子包里面的所有的组件扫描到 Spring 容器中
@Import({EnableAutoConfigurationImportSelector.class}) 详解
通过源码可以发现关键的如下方法:
1 | public String[] selectImports(AnnotationMetadata annotationMetadata) { |
将向容器中导入 SpringBoot 预定义的自动配置类,当触发自动配置时进行自动配置。