Springboot自动装配的原理「建议收藏」

Springboot自动装配的原理「建议收藏」springboot在日常开发中减少了我们许多工作量减少了很多XML配置,这都得益于springboot自动装配的特性。那么springboot是如何实现自动装配的呢?首先我们浅显得介绍一些springboot的一些主要注解:@Configuration用于声明定义bean这也是springboot中的主要注解其实就是平常Spring配置文件中我们写的bean@EnableAutoConfiguration用来开启springboot自动配置的注解,这个也是自动装…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

springboot在日常开发中减少了我们许多工作量 减少了很多XML配置,这都得益于springboot自动装配的特性。

那么springboot是如何实现自动装配的呢  ?

首先我们浅显得介绍一些  springboot的一些主要注解:

@Configuration  用于声明定义bean 熟悉spring的应该都明白  这也是springboot自动装配关键的注解之一 其实就是平常Spring配置文件中我们写的bean 

@EnableAutoConfiguration 用来开启springboot自动配置的注解 ,这个也是自动装配中很重要的注解

@ConfigurationProperties  用来读取配置文件 并封装成实体类

@EnableConfigurationProperties 这个一般要配合@ConfigurationProperties使用  可以使@ConfigurationProperties封装成的实体类成功注入(前提是@ConfigurationProperties的实体类没有被@Component注解)

除了这些注解 还有许多其他注解 就不一一阐述。

接下来我们就从springboot的启动类开始讲解springboot自动装配的原理

Springboot自动装配的原理「建议收藏」

这里我们看到启动类中的注解@SpringBootApplication 这其实是一个组合注解

Springboot自动装配的原理「建议收藏」

 

@SpringBootApplication中有3个主要注解 1.@SpringBootConfiguration 2.@ComponentScan 3.@EnableAutoConfiguration

我们依次讲解:

首先讲解一下@SpringBootConfiguration这个注解 这个其实就是上面介绍过的@Configuration的注解 用于定义bean的,springboot的启动类其实也就是作为spring的一个bean注入到spring容器中。

@ComponentScan 是spring中的注解 主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中

接下里就是@EnableAutoConfiguration这个注解 这个是开启自动装配的核心注解,他的作用就是获取配置类 扫描并注入IOC容器中进行管理,他也是组合注解  我们点进去看又能看到

@AutoConfigurationPackage ​​​​​​​@Import 这2个注解Springboot自动装配的原理「建议收藏」

@AutoConfigurationPackage  添加该注解的类所在的package 作为 自动配置package 进行管理,个人的理解吧  我觉得这个注解的含义就是扫描springboot所在包 将其配置类交给IOC管理。

@Import({AutoConfigurationImportSelector.class}) 这个导入AutoConfigurationImportSelector.class这个类,将其注入spring容器  而这个导入的类的作用可以帮助将所有符合条件的@Configuration配置交给spring的IOC容器进行注入。

这里面有个selectImports方法 里Springboot自动装配的原理「建议收藏」里面调用了一个getCandidateConfigurations方法,就是用来获取  META-INF/spring.factories中配置文件中的需要自动装配的类名,配置文件如下图  

Springboot自动装配的原理「建议收藏」

这些类基本都是被@Configuration注解的 

简而言之,就是Spring Boot在启动的时候就是从类路径下的META-INF/spring.factories中获取需要自动装配的类  (一些配置组件),找到这些类(XXXAutoConfiguration),通过SpringFactoriesLoader机制创建对应的bean,注入到容器中,完成了自动注入spring容器,本来需要在spring的xml配置文件中去配置bean的操作就免去了 ,也就是springboot完成了自动装配。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171219.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • xp 架设网站服务器软件,xp架设ftp服务器软件

    xp 架设网站服务器软件,xp架设ftp服务器软件xp架设ftp服务器软件内容精选换一换由于智能写Cache是华为自研闭源工具,仅支持华为鲲鹏处理器使用。需在所有云服务器上安装DataProvider软件,SAP技术支持人员通过该软件收集云服务器所在的平台信息,以便在SAP系统故障、性能下降时进行定位和分析。SAPNetWeaver所在的服务器上,在创建服务器的时候需要为其指定名为DataproviderAccess的Agency,同时也需…

    2022年7月21日
    12
  • Android LayoutParams详解「建议收藏」

    Android LayoutParams详解「建议收藏」在平时的开发过程中,我们一般是通过XML文件去定义布局,所以对于LayoutParams的使用可能相对较少。但是在需要动态改变View的布局参数(比如宽度、位置)时,就必须要借助这个重要的类了。本文将结合具体场景详细讲解LayoutParams的相关知识。

    2022年9月21日
    2
  • docker离线安装部署_ubuntu 离线安装docker

    docker离线安装部署_ubuntu 离线安装docker说明使用虚拟机真实模仿离线环境虚拟机系统为CentOS7正文下载Docker二进制文件(离线安装包):下载地址本文使用/x86_64/docker-17.12.1-ce.tgz,注意对应操作系统类型。通过FTP工具将docker-17.12.1-ce.tgz上传到服务器上解压安装包tarzxfdocker-17.12.1-ce.tgz将docker相关命令拷贝到/usr/bin,方便直接运行命令sudocpdocker/*/usr/bin/启动Docke

    2022年9月26日
    4
  • TCP服务端和客户端连接

    TCP服务端和客户端连接TCP:Transmission Control Protocol 传输控制协议 ,是一种面向连接的、可靠的、基于字节流的传输层通信协议。注:先启动服务端,再启动客户端。客户端:package TCP;import java.io.IOException;import java.net.Socket;import java.util.Scanner;// 客户端pub…

    2022年6月13日
    34
  • 申请成为EFL Developer.

    申请成为EFL Developer.申请成为EFLDeveloper.

    2022年5月20日
    34
  • C++大数运算_size_t几个字节

    C++大数运算_size_t几个字节#include<cstring>#include<string>#include<iostream>usingnamespacestd;constexprautoMAXN=9999;constexprautoMAXSIZE=1000;constexprautoDLEN=4;classBigN{priv…

    2022年9月28日
    2

发表回复

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

关注全栈程序员社区公众号