对Springboot原理的理解

springboot给人的感觉就是简单易用,相比spring,少了xml文件繁琐的配置,想和其他组件结合,只需要引入相关组件jar包,并在yml或者property文件中添加组件需要的值就可以使用。springboot和spring相比就是Spring在xml文件中声明了很多bean,例如datasource,试图解析器等相关bean。springboot通过maven依赖,自动将这些bean引入到ioc容器。springboot自带tomcat,

问题是springboot如何通过maven依赖将这些bean引入到了ioc容器的,并且读取配置文件给bean使用的?

在springboot的启动类中有一个@SpringBootApplication,@SpringBootApplication中有一个@EnableAutoConfiguration,在@EnableAutoConfiguration中有@Import,通过@Import中实现了ImportSelector接口的DeferredImportSelector类将那些需要的bean引入到ioc容器中。至于引入那些bean,通过SpringFactoriesLoader.loadFactoryNames方法读取META-INF/spring.factories文件中信息,spring.factories中包含了很多配置类,这些配置类里面声明了用到的bean,当然不是每个配置类都会被引入的,因为有些配置类的引入是带有条件的,通过@ConditionalOnBean  @ConditionalOnClass这些定义需要的条件。然后通过@EnableConfigurationProperties与@ConfigurationProperties让yml或者properties文件里面的值赋值到bean中。

总结起来就是这样的。

1.读取需要引入的bean   @SpringBootApplication -->@EnableAutoConfiguration-->@Import-->DeferredImportSelector的selectImports方法--->SpringFactoriesLoader.loadFactoryNamesd读取maven依赖jar包下的spring.factories文件获取到需要加载的bean

2.将bean引入到IOC容器中   通过@import中---->DeferredImportSelector的selectImports方法将读取到的bean加载到ioc容器中

3.让配置文件里面的值生效   通过@EnableConfigurationProperties与@ConfigurationProperties让yml或者properties文件里面的值赋值到bean中。

springboot原理源码分析

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值