spring框架自动装配的原理
目录
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框架自动装配的原理相关推荐
- Spring Boot 自动装配的原理
在Spring Boot中,不得不说的一个点是自动装配,它是Starter的基础,也是Spring Boot的核心,那么什么叫自动装配呢?或者说什么叫装配呢? 简单来说,就是自动将Bean装配到IoC ...
- Spring Boot自动装配原理详解
目录 1.环境和依赖 1.1.spring boot版本 1.2.依赖管理 2.自动装配 2.1.流程概述 2.2.三大步前的准备工作 2.2.1.注解入口 2.2.2.获取所有配置类 2.3.获取过 ...
- Spring Boot自动装配过程解析及简单Demo演示
文章目录 1.约定大于配置 2.自动装配原理 2.1.`@SpringBootApplication` 2.2.`@EnableAutoConfiguration` 2.3.`@Import` 2.4 ...
- Spring Boot - 自动装配中的不可忽视的@Import
文章目录 Pre 四种处理方式 从@SpringBootApplication注解说起 @SpringBootApplication组合注解说明 @Target(ElementType.TYPE) @ ...
- spring Bean自动装配
spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...
- (Spring)自动装配bean
文章目录 自动装配bean 1. 环境搭建 2. byName自动装配 3. byType自动装配 4. 使用注解自动装配 4.1 @Autowired和@Qualifier 4.2 @Resourc ...
- Spring autowire 自动装配简介
Spring autowire 自动装配简介 注意本文与一般spring 标注@Autowire 无关 如下例子定义了3个类 Dperson Dcar & Daddress 其中Dperson ...
- Spring Autowire自动装配(转http://lep1985520.blog.163.com/blog/static/56600480200901441338486/)
Spring Autowire自动装配 技术收藏 2009-01-14 16:13:38 阅读284 评论0 字号:大中小 订阅 Spring Autowire自动装配 在应用中,我们常常使用 ...
- Spring学习——自动装配
自动装配说明 自动装配是使用spring满足bean依赖的一种方法 spring会在应用上下文中为某个bean寻找其依赖的bean. Spring中bean有三种装配机制,分别是: 在xml中显式配置 ...
最新文章
- Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version available for of
- contentProvider的使用总结
- 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、通过topclass参数自定义三线表表格的显示形式(显示为类似斑马线、并将所有列居中,包括包含行标签的第一列)
- 开启注册丨全国社交媒体处理大会(SMP 2020)召开,98场报告日程全公开
- 05_学生管理系统,xml读写,布局的综合应用
- linux下apache+php(fastcgi)web服务器的搭建
- css 设置背景图片模糊,内容不模糊
- github果然强大
- EMLOG仿微信主题模板V3.11
- 【转】Android - 文件读写操作 总结
- 网上骗子太多了:关于冒充儿童医院网站的例子
- “众矢之的”马库斯回应14个问题,将深度学习质疑到底
- 个人计算机多核cpu好处,CPU是多核好还是高主频好?
- php打印出前一天时间戳,使用php 获取时间今天明天昨天时间戳的详解
- PS视频教程|photoshop视频教程零基础入门到精通
- 中国石油安全问题及解决对策
- 1602液晶指定位置光标闪烁程序
- EPON+EOC 大批量设备网管解决方案
- 320、Vue学习笔记26 -【生产环境部署】 2020.04.20
- 关于下载淘宝教育的课程
热门文章
- 云架构师进阶【企业SAP上云解决方案】 - 手把手教会您SAP在云端部署的规划设计
- 跟着王进老师学开发C#篇第二季:面向对象-王进-专题视频课程
- Kernighan-Lin
- 如何使用CMD修复硬盘命令来解决硬盘问题?
- Promise学习笔记(下)
- python func函数用法_Python常见内置高效率函数用法示例
- $Luogu$ $P5514$ $[MtOI2019]$ 永夜的报应
- python爬虫智能解析库详解
- 合理的估算线程池的大小
- Linux 下的金山词霸--星际译王的安装过程