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~~~~