SpringBoot 项目启动分析

0
(0)

整体上来说就是启动时会通过SpringApplication的构造函数调用SpringFactoriesLoader的loadSpringFactories,此处会加载calsspath中的每个spring.factories文件中类名,放到缓存中。后续会处理配置文件中的自动配置类

@SpringBootApplication 注解等同于 spring 的包扫描@ComponentScan、java配置类@Configuration、自动配置@EnableAutoConfiguration ,所以当我们调用SpringApplication.run(XXApp.class,args);执行的时候,spring 会根据参数、classpath中的类,判断是否是web项目,创建对应的ApplicationContext,然后这个XXApp就是主配置类,同时因为@SpringBootAppliation注解具有ComponentScan的作用,所以也会扫描其他的配置类,@EnableAutoConfiguration注解上通过@Import指定了一个类叫做AutoConfigurationImportSelector,当XXApp这个配置类是通过ConfigurationClassParser的processDeferredImportSelectors 方法触发执行 processImports 然后将这些配置类进行初始化。

这些自动配置类上定义的@Bean有些是带有各种不同条件注解,满足条件的会被创建,通常是检测类是否在classpath或者是配置是否开启,或者是同时有哪些bean或者没有哪些bean


这篇文章有用吗?

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据