SpringBoot项目启动过程源码终于整体捋了一遍(三)

上篇分析到了构造SpringApplication的过程,为了了解这个主源类primarySources,大致撸了一遍bean加载的过程。同时还遗留了一个问题,已经看到初始化SpringApplication的时候esourceLoader是为了拿类加载器,那如果resourceLoader为null怎么办呢,总不能不要类加载器吧,这篇带着这个问题继续看SpringApplication的初始化过程,还是先把构造方法先贴一下:

 继续往下看:

其实很多时候从方法名就可以知道这个方法的作用,deduceFromClasspath()这个方法一看就知道是从类路径中推断出应用类型,可以看一下这个方法:

可以这里分了三种应用类型 ,即reactive、none和service,判断条件里用了ClassUtils.isPresent()方法,至于这些常量参数其实就是一些类路径,可以看一下:

摆这些类路径是要干嘛,一副要加载它们的样子,那就继续看看这个ClassUtils.isPresent()方法:

看来关键在于这个forName()方法,意思是这个方法能没有异常的执行完那就返回true,那就看看这个forName():

 

 有时候大佬们写的注释得看一看,明明白白的告诉我们这个forName()方法可以替换Class.forName(),而且同样返回类的实例,厉害了,那以后岂不是可以用ClassUtils.forName()来加载类。

到这里就理清了是怎么推断应用类型了,说白了就是看哪些类可以被加载,再说白一点就是引入了哪些jar包。

本来想继续往下写的,但是接下来的内容值得专门一篇博,所以这篇就到这里,依然总结一下:这篇就走了一行代码,看了下初始化SpringApplication的过程中是怎么推断应用类型的,同时开头的问题仍然遗留着,即:初始化SpringApplication的时候esourceLoader为null怎么拿类加载器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值