Java教程:springboot启动流程是什么?
第一步:
SpringApplication这个类整合了其他框架的启动类, 只要运行这一个类,所有的整合就都完成了,调用run函数, 将当前启动类的字节码传入(主要目的是传入@SpringBootApplication这个注解), 以及main函数的args参数
第二步:
在@SpringBootApplication注解中包含比较重要的注解: @EnableAutoConfiguration、@ComponentScan、@SpringBootConfiguration
@EnableAutoConfiguration注解中又包含一个@Import注解,该注解有一个类叫AutoConfigurationImportSelector,该类实现了ImportSelector接口的selectImports方法,该方法会去查询META-INF下的spring.factories文件。spring.properties文件中所有的EnableAutoConfiguration为key的全类名都会加载,但不一定都会放入IoC容器中,要判断他们是否满足Conditional的条件
@ComponentScan注解: 它会默认扫描@ComponentScan所在类的package及子包进行扫描
@SpringBootConfiguration: 标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名
第三步:
@SpringBootApplication注解封装了核心的@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan三个类, 大大节省了程序员配置时间,这就是SpringBoot的核心设计思想
常用的springboot注解
@SpringBootApplication: SpringBoot的非常重要的注解,用于实现Bean的默认扫描、自动装备
@SpringBootConfiguration: 标志当前的类是配置类
@EnableAutoConfiguration: 开启自动装备,顺便将自动装配的原理说说
@ComponentScan: 自定义包扫描的路径
@MapperScan: SpringBoot内置的Mybatis的Mapper文件扫描配置注解