SpringBoot 项目启动分析

整体上来说就是启动时会通过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


Leave a Comment

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