SpringBoot原理解析

        @SpringBootApplication ---->1.1、@SpringBootConfiguration

                                                       1.2、@EnableAutoConfiguration  自动导入包的一个文件

                                                       1.3、@ComponentScan 扫描当前主启动类的包

        1.1----->@Configuration------>@component

        1.2--->@AutoConfigurationPackage---> @Import({AutoConfigurationPackages.Registrar.class}) 自动注册包

                   @Import({AutoConfigurationImportSelector.class}) 自动选择器看选择了很么东西-----> 获得getAutoConfigurationEntry方法--->getCandidateConfigurations()获取候选的配置

------>loadSpringFactory() 获得项目资源和系统资源,从这些资源中遍历所有的nextElement(自动配置) 遍历完成以后封装为一个properties供我们使用

注:自动配置有一个核心注解叫ConditionalOnClass用来判断是否生效,如果条件都满足才能生效。所以说上面都读取后需要一个Start才能实现。

结论:

        SpringBoot所有的自动配置都在启动类中被加载,springboot的Meta-INF的springfactories包含了所有的自动配置类。但是不一定生效,需要判断条件是否成立。有starter才能使得自动装配生效随后就可以配置成功了。

具体步骤

1、springboot启动的时候需要在META-INF----->spring.factories获取指定的值

2、将这些自动配置的类倒入容器,自动配置类就会生效,帮我们自动配置。

3、以前我们需要配置的文件,boot自己便帮我们做了

4、整合JAVAEE 解决方案和自动配置的东西都在Spring-boot-autoconfigure-2.2.jar.

5、他会把所有的需要导入的组件,以类名的方式返回,这些组件就会被添加到容器中。

6、容器中也会存在非常多的*****AutoConfiguration的文件,这些类给容器中导入了这些场景中的所有组件。

Run方法的运行过程:

       1、构造方法:首先推断你是不是WEB方法,其次加载所有的初始化器,然后设置所有的程序监听器,最后推断并且设置Main方法的定义类

        2、run(),实例化对象,初始化监听器,装配环境参数,打印banner,上下文区域刷新,报告异常获取,核心就是JavaConfig @Configraion

总结:先判断是web方法与否,第二个推断main方法的主类,监听器处理上下文,全面接管SpringMVC的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值