springboot 自动加载源码分析

一、前言
因为springcloud的组件都是借助springboot的自动加载创建对象,所以分析springboot自动加载,对springcloud的组件源码学习是很有必要的。
二、源码分析
1、@SpringBootApplication
总所周知,springboot启动类中都有@SpringBootApplication
在这里插入图片描述
2、@EnableAutoConfiguration
进去之后,查看自动加载配置的注解
在这里插入图片描述
3、AutoConfigurationImportSelector
查看@Import中的类
在这里插入图片描述 4、selectImports
重点看AutoConfigurationImportSelector类的selectImports方法,会自动执行selectImports方法,这里重点看selectImports方法中 的getAutoConfigurationEntry方法调用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
String factoryClassName = factoryClass.getName();是加载自定义配置文件
loadSpringFactories(classLoader).getOrDefault(factoryClassName, Collections.emptyList()); 是加载springboot中的配置文件在这里插入图片描述
在这里插入图片描述
常量值FACTORIES_RESOURCE_LOCATION
public static final String FACTORIES_RESOURCE_LOCATION = “META-INF/spring.factories”;
拿springcloud 的eureka为例,进而找寻下面的文件
在这里插入图片描述
如果类上加了EnableAutoConfiguratio的注解,就会自动找到后面的字符串,就是key-value的关系,最终将配置类加载进去
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,用于构建独立的、可执行的、生产级的Spring应用程序。它提供了一个快速、简单的方式来开发和部署应用程序。而在Spring Boot的启动过程中,有以下几个主要的步骤: 1. 加载启动类:Spring Boot应用程序的启动类通常是一个带有`@SpringBootApplication`注解的Java类。在应用程序启动时,会通过`main`方法加载这个启动类。 2. 创建Spring Application对象:Spring Boot会创建一个`SpringApplication`对象,用于启动应用程序。`SpringApplication`是Spring Boot框架的核心类,它负责管理整个应用程序的生命周期。 3. 解析配置信息:在启动过程中,`SpringApplication`会解析`application.properties`或`application.yaml`文件中的配置信息,并将其加载到Spring环境中。这些配置信息可以用来配置应用程序的各个方面,如数据库连接、日志级别等。 4. 创建并配置Spring容器:Spring Boot使用Spring容器来管理应用程序中的各个Bean。在启动过程中,`SpringApplication`会根据配置信息创建并配置一个Spring容器,该容器负责加载和管理应用程序中的所有Bean。 5. 执行自定义逻辑:在Spring Boot的启动过程中,可以添加自定义的逻辑。例如,可以通过实现`CommandLineRunner`接口来在应用程序启动后执行一些初始化操作。 6. 启动应用程序:完成上述步骤后,`SpringApplication`会启动应用程序,并通过Servlet容器(如Tomcat、Jetty等)监听端口,开始接收和处理HTTP请求。 总体而言,Spring Boot的启动流程是一个通过加载启动类、解析配置信息、创建和配置Spring容器的过程。通过Spring Boot的自动配置和快速启动能力,开发者可以更加方便地构建和部署Spring应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值