目录

1.Spring自动装配是什么?解决了什么问题?

2.自动装配实现原理:


1.Spring自动装配是什么?解决了什么问题?

自动装配就是让应用程序上下文为你找出依赖项的过程。说的通俗一点,就是Spring会在上下文中自动查找,并自动给bean装配与其关联的属性!

spring中实现自动装配的方式有两种,一种是通过xml文件、另一种是通过注解

Spring自动装配解决了Spring时代项目配置繁琐的问题,简化配置。

2.自动装配实现原理:

1.当启动Springboot应用程序的时候,会先创建SpringApplication对象,在对象的构造方法中会 进行某些参数的初始化工作,最主要的是判断当前应用程序的类型以及初始化器和监听器,在这个过程中会加载整个应用程序中的Spring.factories文件将文件内容放到缓存对象中,方便后续获取。

2.SpringApplication对象创建完成之后,开始执行run方法,来完成整个启动,启动过程中最主要的有两个方法,第一个叫做prepareContext,第二个叫做refreshContext,在这两个关键步骤中完成了自动装配的核心功能,前面的处理逻辑包含了上下文对象的创建banner的打印异常报告期的准备等各个准备工作,方便后续进行调用。

3.在prepareContext方法中主要完成的是对上下文对象的初始化操作,包括了属性值的设置,比如环境对象,在整个过程中有一个非常重要的方法,叫做load,load主要完成一件事,将当前启动类作为一个beanDefinition注册到registry中方便后续在进行BeanFactoryPostProcessor调用执行的时候,找到对应的主类,来完成@SpringbootApplication,@EnableAutoConfiguration等注解的解析工作。

4.在refreshContext方法中会进行整个容器的刷新过程,会调用Spring中的refresh方法,refresh中有13个非常关键的方法,来完成整个Spring应用程序的启动,在自动装配过程中,会调用invokeBeanFactoryPostProcessor方法,在此方法中主要是对ConfigurationClassPostProcessor类的处理,这是BFPP的子类也是BDRPP的子类,在调用的时候会先调用BDRPP中的postProcessBeanDefinitionRegistry方法然后调用postProcessBeanFactory方法,在执行postProcessBeanDefinitionRegistry的时候会解析处理各种注解,包含@PropertySource,@ComponentScans,@Bean,@Import等注解,最主要的是@Import注解的解析。

5.在解析@Import注解的时候,会有一个getImports的方法,从主类开始递归解析注解,把所有包含@Import的注解都解析到,然后在processImport方法中对Import的类进行分类,此处主要识别的是AutoConfigurationImportSelect归属于ImportSelect的子类,在后续过程中会调用deferredImportSelectHandler中的process方法,来完整EnableAutoConfiguration的加载

spring框架自动装配的原理相关推荐

  1. Spring Boot 自动装配的原理

    在Spring Boot中,不得不说的一个点是自动装配,它是Starter的基础,也是Spring Boot的核心,那么什么叫自动装配呢?或者说什么叫装配呢? 简单来说,就是自动将Bean装配到IoC ...

  2. Spring Boot自动装配原理详解

    目录 1.环境和依赖 1.1.spring boot版本 1.2.依赖管理 2.自动装配 2.1.流程概述 2.2.三大步前的准备工作 2.2.1.注解入口 2.2.2.获取所有配置类 2.3.获取过 ...

  3. Spring Boot自动装配过程解析及简单Demo演示

    文章目录 1.约定大于配置 2.自动装配原理 2.1.`@SpringBootApplication` 2.2.`@EnableAutoConfiguration` 2.3.`@Import` 2.4 ...

  4. Spring Boot - 自动装配中的不可忽视的@Import

    文章目录 Pre 四种处理方式 从@SpringBootApplication注解说起 @SpringBootApplication组合注解说明 @Target(ElementType.TYPE) @ ...

  5. spring Bean自动装配

    spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...

  6. (Spring)自动装配bean

    文章目录 自动装配bean 1. 环境搭建 2. byName自动装配 3. byType自动装配 4. 使用注解自动装配 4.1 @Autowired和@Qualifier 4.2 @Resourc ...

  7. Spring autowire 自动装配简介

    Spring autowire 自动装配简介 注意本文与一般spring 标注@Autowire 无关 如下例子定义了3个类 Dperson Dcar & Daddress 其中Dperson ...

  8. Spring Autowire自动装配(转http://lep1985520.blog.163.com/blog/static/56600480200901441338486/)

    Spring Autowire自动装配 技术收藏 2009-01-14 16:13:38 阅读284 评论0   字号:大中小 订阅 Spring Autowire自动装配   在应用中,我们常常使用 ...

  9. Spring学习——自动装配

    自动装配说明 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean. Spring中bean有三种装配机制,分别是: 在xml中显式配置 ...

最新文章

  1. Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version available for of
  2. contentProvider的使用总结
  3. 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、通过topclass参数自定义三线表表格的显示形式(显示为类似斑马线、并将所有列居中,包括包含行标签的第一列)
  4. 开启注册丨全国社交媒体处理大会(SMP 2020)召开,98场报告日程全公开
  5. 05_学生管理系统,xml读写,布局的综合应用
  6. linux下apache+php(fastcgi)web服务器的搭建
  7. css 设置背景图片模糊,内容不模糊
  8. github果然强大
  9. EMLOG仿微信主题模板V3.11
  10. 【转】Android - 文件读写操作 总结
  11. 网上骗子太多了:关于冒充儿童医院网站的例子
  12. “众矢之的”马库斯回应14个问题,将深度学习质疑到底
  13. 个人计算机多核cpu好处,CPU是多核好还是高主频好?
  14. php打印出前一天时间戳,使用php 获取时间今天明天昨天时间戳的详解
  15. PS视频教程|photoshop视频教程零基础入门到精通
  16. 中国石油安全问题及解决对策
  17. 1602液晶指定位置光标闪烁程序
  18. EPON+EOC 大批量设备网管解决方案
  19. 320、Vue学习笔记26 -【生产环境部署】 2020.04.20
  20. 关于下载淘宝教育的课程

热门文章

  1. 云架构师进阶【企业SAP上云解决方案】 - 手把手教会您SAP在云端部署的规划设计
  2. 跟着王进老师学开发C#篇第二季:面向对象-王进-专题视频课程
  3. Kernighan-Lin
  4. 如何使用CMD修复硬盘命令来解决硬盘问题?
  5. Promise学习笔记(下)
  6. python func函数用法_Python常见内置高效率函数用法示例
  7. $Luogu$ $P5514$ $[MtOI2019]$ 永夜的报应
  8. python爬虫智能解析库详解
  9. 合理的估算线程池的大小
  10. Linux 下的金山词霸--星际译王的安装过程