SpringBoot自动装配原理-创新互联

Spring Boot 是一个可以轻松创建独立的、生产级的基于 Spring 的应用程序的框架,Spring Boot 框架将 Spring、MyBatis、SpringMVC 中的一系列配置进行了简化,只需要使用最简单的配置和注解就能快速开发应用程序。通过官网提供的 Spring Initializr 插件可以快速生成 Spring Boot 应用。

网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;成都做网站、成都网站制作收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了10多年的创新互联网站建设公司。

什么是自动装配
Spring Boot 相比于 Spring 的一个很大进步点在于不用再手动配置一系列配置文件,Spring Boot 提供了配置应用程序和框架所需要的基本配置,这就是自动配置。

Spring Boot 启动器
Spring Boot 中的一系列启动器是自动装配的最佳实践。比如当引入了一个 spring-boot-starter-web 依赖:

org.springframework.bootspring-boot-starter-web

Spring Boot 框架就会自动引入 web 环境所有的依赖,并且自动配置,Spring Boot 将所有的功能场景,都变成一个个启动器,想要用什么功能,只需要找到对应的启动器就可以了。

Spring Boot 的所有启动器可以在官网https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter中找到,下图是所有启动器中的一小部分:

在这里插入图片描述

自动装配原理分析

Spring Boot 的主程序也可以称为启动类,这是开启 Spring Boot 项目的入口。查看源代码推荐使用 IDEA。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, args);
  }
}

@SpringBootApplication 注解标注这个类是一个 SpringBoot 的启动类,这个注解也是自动装配的核心。

在这里插入图片描述

@Target、Retention、Documented、Inherited 四个注解是标准的元注解,核心在于@SpringBootConfiguration和@EnableAutoConfiguration这两个注解。

通过继续进入注解内部,可以将@SpringBootConfiguration和@EnableAutoConfiguration这两个注解的结构表示出来:

@SpringBootConfiguration : Spring Boot 的配置
    @Configuration : Spring 配置类
        @Component : Spring 的组件
@EnableAutoConfiguration : 自动配置
    @AutoConfigurationPackage : 自动配置包
        @Import({Registrar.class}) : 自动配置包注册
        @Import({AutoConfigurationImportSelector.class}) : 导入选择器

@SpringBootConfiguration 声明了这个类为 SpringBoot 的组件,@EnableAutoConfiguration 是自动配置的核心,其中@AutoConfigurationPackage 对配置包册,AutoConfigurationImportSelector 类来进行自动装配。

继续来看看 AutoConfigurationImportSelector 这个类

在这里插入图片描述

  1. 引入环境。

  2. 引入 bean 加载器。

  3. 引入资源加载器。

  4. 配置导入。

继续向下看,selectImports 中 的getAutoConfigurationEntry 方法第 123 行代码将所有的配置通过 getCandidateConfigurations 方法放进一个 List 集合中

在这里插入图片描述

继续进入 getCandidateConfigurations 方法,这个配置获取的路径是 EnableAutoConfiguration.class,也就是@SpringBootApplication 所依赖的两个重要注解的其中一个。这段代码最终想表达的意思是将启动类下的所有配置都导入。

在这里插入图片描述

进入 LoadFactoryNames 或者就从 Assert.notEmpty 的信息中,可以发现这些配置来自于 META-INF/spring.factories 中,从 jar 包中可以查看到具体的目录结构

在这里插入图片描述
在 spring.factories 文件中存在大量 xxxAutoConfiguration,这个文件记录了所有 starter 的自动装配类,就是这些类在容器中导入了场景需要的所有组件;并通过 @Configuration 自动配置

在这里插入图片描述
通过一张图来总结一下自动装配的原理,通过上面对源码的分析,可以看出 SpringBoot 所有的自动配置都在启动类中被扫描和加载。所有的自动配置类都在 spring.properties 中。

在这里插入图片描述
自动装配总结起来可以分为以下几步:

  1. Spring Boot 在启动的时候,从类路径下/META-INF/spring.factories 获取指定的值;

  2. 将这些自动配置的类导入容器,自动配置就会生效,进行自动配置!

  3. 以前我们需要自动配置的东西,现在 Spring Boot 帮我们做了

  4. 自动配置的东西都在 spring-boot-autoconfigure.jar 这个包下

  5. 它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器;

  6. 容器中也会存在非常多的 xxxAutoConfiguration
    的类(@Bean),就是这些类给容器中导入了这个场景需要的所有组件;并通过@Configuration 自动配置。

  7. 有了自动配置类,免去了我们手动编写配置文件的步骤。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

网页标题:SpringBoot自动装配原理-创新互联
链接分享:https://www.cdcxhl.com/article2/djsgoc.html

成都网站建设公司_创新互联,为您提供虚拟主机标签优化网站建设建站公司小程序开发手机网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化