共计 1278 个字符,预计需要花费 4 分钟才能阅读完成。
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~~~~