springBoot 自动装配

这篇具有很好参考价值的文章主要介绍了springBoot 自动装配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言

自动装配则是 SpringBoot 的核心,自动装配是如何实现的呢?为什么我们只要引入一个 starter 组件依赖就能实现自动装配呢,接下来就让我们一起来探讨下 SpringBoot 的自动装配机制

2.自动装配原理

  提到自动装配,那么你首先得知道JDK的SPI(serviceproviderinterface)机制,因为自动装配的完成就是靠SPI机制完成的。

    接下来咱就详细分解下自动装配的原理过程

2.1@SpringBootApplication注解

spingBootApplication 注解是springBoot的核心,此注解为复合注解。如下图,其中@EnableAutoConfiguration注解又是实现自动装配的关键。

springBoot  自动装配

2.2@EnableAutoConfiguration注解

如图:此注解也是一个复合注解,其中@Import也是实现自动装配的关键,个人认为这是一个最核心的注解。有时间,我会单独写一篇博客来针对此注解进行讲解。注意看:此注解中的value为:AutoConfigurationImportSelector.class。其实呢,@Import注解的value为一个class 数组,这里并未看出,其实可以写多个

springBoot  自动装配

 文章来源地址https://www.toymoban.com/news/detail-486503.html

2.3AutoConfigurationImportSelector

org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#getAutoConfigurationEntry 是这里的核心。

这里做了两件事情:

1.加载了各个模块下的spring.factories文件

2.将spring.facrotries中加载的全限定类名去重,并将带有@excule的注解刨除掉。

springBoot  自动装配

 2.4 如何加载各个模块下的spring.factories文件的呢?

我们可以追溯  org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#getCandidateConfigurations方法

在org.springframework.core.io.support.SpringFactoriesLoader#loadSpringFactories中找到了加载spring.factroies的地方 其中FACTORIES_RESOURCE_LOCATION =META-INF/spring.factories  也就是说我们的spring.factories的存放路径及名称都需要遵守这个规则

springBoot  自动装配

这里加载完成之后是spring.factorties里的所有值,之后会把enableAutoConfiguration的值过滤出来,然后加载到容器中。

下面看下我们加载到了什么:可以看到,这些***AutoConfiguration 类就是各个组件的配置类,这也就是为什么springBoot不需要再编写那么的xml的原因。

springBoot  自动装配

 2.5 拿到spring.factories 关于enableAutoConfiguration的值并过滤后各组件的的配置类是如何加载到spring 容器中的呢?

可以看到 我们的AutoConfigurationImportSelector 实现了DeferredImportSelector接口,而此接口继承了ImportSelector接口。

springBoot  自动装配

 ImportSelector接口:定义了selectImports接口方法,此方法返回了要加载进容器中的类的全限定名,

springBoot  自动装配

 

至此,我们知道了springBoot 是如何一步步找到各组件的spring.facatories,并将autoAutoConfiguration对应的类全限定名取出来,即各组件的配置类,然后加载到容器中的整个过程

 

到了这里,关于springBoot 自动装配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot的自动装配解读

    目录   1.Springboot的自动装配 1.1 组件装配 1.1.1 组件 1.2 Spring Framework 的模块装配 1.2.1 @Import注解 1.2.2 BeanDefinition  1.3 Spring Framework 的条件装配 1.3.1 @Profile 1.3.2 @Conditional  1.3.3 MetaData元数据接口(补充) AnnotatedTypeMetadata AnnotationMetadata MethodMetadata  1.4 SPI机制 1.5 Springboot 的装配机

    2024年02月11日
    浏览(42)
  • springboot启动流程 (3) 自动装配

    在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能。 本文将详细分析该注解的工作流程。 启用SpringBoot自动装配功能,尝试猜测和配置可能需要的组件Bean。 自动装配类通常是根据类路径和定义的Bean来应用的。例如,如果类路径上有tomcat-embedded.jar,那么可能需要一个

    2024年02月09日
    浏览(48)
  • SpringBoot自动装配原理及分析

    在使用SpringBoot的时候,会自动将Bean装配到IOC容器中。例如我们在使用Redis数据库的时候,会引入依赖spring-boot-starter-data-redis。在引入这个依赖后,服务初始化的时候,会将操作Redis需要的组件注入到Ioc容器中进行后续使用。 自动装配的大致过程如下: 获取到组件(spring-boo

    2024年01月21日
    浏览(43)
  • 【Spring】深究SpringBoot自动装配原理

    早期的 Spring 项目需要添加需要配置繁琐的 xml ,比如 MVC 、事务、数据库连接等繁琐的配置。 Spring Boot 的出现就无需这些繁琐的配置,因为 Spring Boot 基于 约定大于配置 的理念,在项目启动时候,将约定的配置类自动装配到 IOC 容器里。 这些都因为 Spring Boot 有自动装配的特性

    2024年02月14日
    浏览(42)
  • 一文足够,SpringBoot自动装配底层源码

    目录 自动装配原理 开始深入源码 总结自动装配原理 首先明白一个概念,什么是自动装配? 我们在项目中建一个yaml或者properties文件,里面配置一些参数,如redis,在pom中引入启动器,之后就能用redis,自动把这些集成到spring中,这就是自动装配。 先来提前剧透: 加载spring.

    2023年04月13日
    浏览(43)
  • SpringBoot自动装配原理学习与实战运用

    我们知道SpringBoot就是框架的框架,它解决了Spring在开发过程中繁琐的配置问题。例如在引入web、aop、data、cache等等场景,以往我们使用Spring时,会需要向容器中手动配置DispatchServlet、 AspectJAutoProxyingConfiguration等等配置类,而使用SpringBoot框架后,只需要引入spring-boot-starter-xx

    2023年04月13日
    浏览(41)
  • SpringBoot自动装配—简化依赖管理的利器

    在现代的软件开发中,依赖管理是一个关键的任务。随着应用程序规模的增长,手动管理对象之间的依赖关系变得越来越复杂。为了解决这个问题,Spring Boot 提供了一种强大的功能,即自动装配(Autowiring)。本文将深入探讨 Spring Boot 中的自动装配原理和使用方法,并通过具

    2024年02月05日
    浏览(32)
  • SpringBoot@Autowired自动装配失败解决方法

    今天写SpringBoot项目的时候,使用@Autowired注解idea报错了,那就记录一下怎么解决的吧。 打开idea的setting(设置)然后搜索inspection(检查) 然后找到Spring下的Spring Core的Code(代码)找到Autowired for bean class( Spring bean 注入点的自动装配问题),然后改成warning就可以了

    2024年02月12日
    浏览(42)
  • 手写一个starter来理解SpringBoot的自动装配

    自动装配是指SpringBoot在启动的时候会自动的将系统中所需要的依赖注入进Spring容器中 我们可以点开 @SpringBootApplication 这个注解来一探究竟 点开这个注解可以发现这些 我们点开 @SpringBootConfiguration 这个注解 可以发现实际上 @SpringBootApplication 这个其实是一个配置类 再点开 @En

    2024年01月23日
    浏览(42)
  • Springboot中SpringSecurity自动装配原理,源码级别绝对详细

    (1)Springboot有一个自动配置类 SecurityFilterAutoConfiguration , SecurityFilterAutoConfiguration 只要当项目中引入了SpringSecurity的相关jar包就会被自动加载。装载这个类是干嘛的呢? (2)如下图, SecurityFilterAutoConfiguration 自动配置类主要用于,当存在名字叫做\\\"springSecurityFilterChain\\\"的bea

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包