SpringBoot运转原理概述
创建SpringBoot项目,在一个类中,加上@SpringBootApplication注解,此类为启动类,创建业务在启动类所在的包或者子包。运行启动类,会自动扫描子孙包中的类,查看子孙包中是否有自己选择器所管理的启动项,自动装配。没明白继续往下看, 上图!
此类为启动类@SpringBootApplication注解
此包为启动包 com.jt 后续业务代码就写在这个包的子孙包中
启动类调用run() 传递参数 启动类的类型 .class
@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) })
@SpringBootConfiguration 配置文件注解
作用:表示主启动类是一个大型的配置文件 启动时会加载所有的小配置文件
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration 表示该类是一个配置类.
@ComponentScan 指定扫描的包的注解
excludeFilters
说明 在springboot容器启动时,不需要加载某些过滤器.由于parent标签中定义了所有的关联的jar包文件信息.所有需要提前剔除~~~~
接下来就是核心
@EnableAutoConfiguration
其中最关键的要属@Import(AutoConfigurationImportSelector.class)
借助选择器AutoConfigurationImportSelector,EnableAutoConfiguration可以帮助SpringBoot将所有的符合条件的@Configuration都交给SpringBoot容器管理,Spring框架原有的一个工具类:SpringFactoriesLoader的支持,@EnableAutoConfiguration自动装配的功能就成功了。也就是开箱即用
总结:springboot项目就是run()启动类,同时扫描子孙包,找自己的人,找到符合条件的,就给SpringBoot创建的容器并IOC~~~~