01.Spring源码整体脉络介绍及源码编译——四

news2024/11/15 15:26:35

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

IOC是核心

IOC 容器加载过程【重要】:所有模块都依赖IOC,aop,循环依赖都依赖IOC
在这里插入图片描述

在这里插入图片描述

IOC控制反转,控制理念,来解决层与层之间的耦合。DI注入实现

怎么讲Bean交给IOC容器来管理
配置类xml,注解
加载spring上下文
将类注入到IOC容器当中
在这里插入图片描述

当一个类生产Bean最核心一个接口是什么?
BeanFactory:spring的顶层核心接口,负责使用简单工厂模式,生产Bean

BeanDefinition【是一个容器,beandefinitionMap】:spring的顶层核心接口,封装了生产Bean的一切原料
BeanDefinition是由BeanDefinitionRegistry【设计师】一个一个往BeanDefinitionMap往里面放--------注册Bean定义
BeanDefinitionReader用来读取配置文件或者配置注解

在这里插入图片描述
以上三个类可以比喻成::::::::::::::::::::::::::销售、推广、设计师

比如BeanDefinitionScanner扫描到100个类,但是只有部分类上有@Component注解,这是需要BeanDefinitionReader进行扫描,再得到BeanDefinition后需要BeanDefinitionRegtry进行注入到BeanDefinitionMap中。为后面是有准备。。。。。。

AppliacationContext与BeanFactory的区别
在这里插入图片描述
AppliacationContext实现了国际化、实现了事件、等其他接口扫描器读取器,实现了很多东西,服务类,更好的沟通
BeanFactory:只有一个职责:就是生产Bean
在这里插入图片描述

IOC加载过程:::::::::::::::::::::::::::::::::::::::::::::::::::::
1,BeanDefinitionReader读取xmlApplicationContext/@ApplicationContext
2,BeanDefinitionScanner扫描有@Component注解的类
3,BeanDefinitionRegtry将BeanDefinition注入到BeanDefinitionMap中
4,BeanDefinition交给BeanFactory用来生产Bean
5,得到Bean

=======================================================================================================
IOC总结:::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  1. 类------->Bean
  2. 加载Bean定义【读取、扫描、注册】
  3. Application调用后置处理器BeanFactoryPostProcessor进行修改,BeanFactoryRegistryPostProcessor进行注册Bean定义
  4. BeanFactory调用getBean();

非常重要的两个扩展节点:::::::是在ApplicationContext里面完成的

BeanDefinitionPostProcess后置初期器,用来修改BeanDefinition
BeanDefinitionRegistryPostProcess:用来注册,添加图纸

Bean的生命周期

实例化【反射】

填充属性
@Autowire @Value

初始化-------------------------------------------调用:Put()--------------------------------->Map<key,alue>其中key为Bean的名字,Value为Bean的实例
initmethod destory

初始化时会看又没事类实现Aware接口,实现了就会调用各种Aware方法
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy(附源码、数据库)

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts…

【Java基础篇】基础知识易错集锦(二)

我们同样用几道例题来回顾相对应的基础知识&#xff1b; 解析&#xff1a; 首先我呢区分一下实例变量和局部变量&#xff1b; 局部变量&#xff1a;定义在方法内部的变量&#xff1b;实例变量&#xff1a;定义在类中但在任何方法之外&#xff0c;你也可以理解为全局变量&…

16.C预处理器和C库

文章目录C预处理器和C库16.1翻译程序的第一步16.2明示常量&#xff1a;#define16.3在#define中使用参数16.3.1用宏参数创建字符串&#xff1a;#运算符16.3.2预处理器黏合剂&#xff1a;##运算符16.3.3变参宏&#xff1a;...和__VA_ARGS__16.4宏和函数的选择16.5文件包含&#x…

NCTF2022 calc题目复现

calc&#xff08;环境变量注入getshell&#xff09; 经典计算器题目&#xff0c;看着有点眼熟&#xff0c;没错&#xff0c;就是buu三月赛的一道题目。由于那时候web可能都算不上入门&#xff0c;所以也就没有复现。比赛时就网上看了看三月赛的wp&#xff0c;但是没有什么用&a…

IEEE 二进制浮点数的表示

今天&#xff0c;我来将 IEEE 二进制浮点数的表示方式进行一个简单的介绍。 浮点数 在 C 语言中&#xff0c;有两种存储浮点数的方式&#xff0c;分别是 float 和 double &#xff0c;当然了还有long double。这几种浮点型所容纳的长度不同&#xff0c;当然它们存储的精度也就…

[附源码]JAVA毕业设计新型药物临床信息管理系统(系统+LW)

[附源码]JAVA毕业设计新型药物临床信息管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

p5.第一章 Python基础入门 -- 运算符、优先级和表达式 (五)

1.2.3.2.11 False等价 False等价布尔值,相当于bool(value) 空容器 空集合set空字典dict空列表list空元组tuple空字符串None0# bool(value)是布尔函数# In: bool(1), bool(0) # Out: (True

离散数学·支配集、覆盖集、独立集和匹配

支配集 简而言之——V-支配集后剩下的点&#xff0c;都能在支配集中找到相邻的点 支配数的符号是γ0&#xff08;有关点的集&#xff0c;下标为0&#xff09; 例 右下角相同颜色的为同一个支配集 要注意极小性 整个V就是支配集&#xff08;所以说支配集找极大没有意义&#xf…

测试员凡尔赛,工作三年晒出11月工资条,直言加班太累了

最近有工作3年的测试员晒出自己11 月份的工资条&#xff0c;并直言加班太累了。 从工资条上可以看到&#xff0c;这个收入确实不算低&#xff0c;才3年时间&#xff0c;月工资就已经到了二万五了&#xff0c;这个工资已经可以击败绝大多数行业了。 不过二万五只是税前工资&am…

第二证券|系统性稳地产政策加力 租购并举制度加快建立

在房地产职业深度调整期&#xff0c;下一年方针走向备受关注。虽然日前召开的中心政治局会议没提及房地产&#xff0c;可是从其对经济方针的表述能够预见&#xff0c;作为经济支柱产业的房地产职业&#xff0c;下一年将在稳经济中发挥更重要的效果&#xff0c;国家将持续出台系…

[附源码]Python计算机毕业设计SSM基于的装修公司运营管理管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

一文彻底搞懂ssh的端口转发

文章目录背景什么是端口转发&#xff1f;本地端口转发本地端口转发的语法场景1场景二ssh -L参数解释ssh 远程端口的安全问题远程端口转发远程端口转发的语法场景一远程端口转发和本地端口转发要在哪台服务器上执行场景二ssh -R 参数解释端口转发的选项端口转发需要修改哪些ssh配…

fastdfs部署详解

fastdfs部署 官方github支持 官方解释&#xff1a;FastDFS 是一个开源的高性能分布式文件系统。它的主要功能包括&#xff1a;文件存储、文件同步和文件访问&#xff08;文件上传和文件下载&#xff09;&#xff0c;它可以解决高容量和负载均衡问题。FastDFS应该能满足图片分享…

10 款开源工具

1. JIRA 2. Git 3. Jenkins 4. Selenium 5. Groovy 6、Spock 7. Maven 8. Gradle 9. Docker 10. Linux 本文主要介绍Java程序员应该在2019年学习的一些基本和高级工具。如果你是一位经验丰富的Java开发人员&#xff0c;你可能对这些工具很熟悉&#xff0c;但如果不是&…

Java 并发编程<13>-ThreadPoolExecutor的springboot应用

Java 并发编程<13>-ThreadPoolExecutor的springboot应用 Java并发编程<10>安全集合 ...... Java 并发编程<1>-线程实现的方式 线程池简介 a .为什么使用线程池 降低系统资源消耗&#xff0c;通过重用已存在的线程&#xff0c;降低线程创建和销毁造成的消…

基于Surf+GTM的图像配准和拼接算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 SIFT采用的是DoG图像&#xff0c;而SURF采用的是Hessian矩阵&#xff08;SURF算法核心&#xff09;行列式近似值图像。在数学中&#xff0c;Hessian矩阵是一个自变量为向量的实值函数的二阶偏导数…

计算机网络(自顶向下)学习笔记——传输层

第三章—传输层 传输层位于应用层和网络层之间&#xff0c;是分层的网络体系结构中重要的部分&#xff0c;该层为运行在不同主机上的应用进程提供直接的通信服务起着至关重要的作用。在这里我们将讨论两个大的问题&#xff1a;将网络层在不同端系统之间的通信服务扩充到运行在…

机器学习-PCA主成份分析详细解说及代码实现

本站原创文章&#xff0c;转载请说明来自《老饼讲解-机器学习》ml.bbbdata.com 目录 一. PCA主成分分析思想介绍 1.1 主成份分析思想 1.2 什么是主成份 二. PCA主成分分析的数学描述 2.1 主成份分析的数学表达 2.2 主成份系数矩阵A的约定 2.3 主成份分析需要输出什么 三…

Linux网络编程(一)——基础篇

目录 一、网络结构模式 &#xff08;一&#xff09;C/S结构 &#xff08;二&#xff09;B/S结构 二、MAC地址 三、IP地址 &#xff08;一&#xff09;IP地址编址方式 A类IP地址 B类IP地址 C类IP地址 D、E类IP地址 特殊的网址 IP分类的优缺点 &#xff08;二&#x…

解决org.apache.jasper.JasperException: 无法为JSP编译类

1.问题描述 org.apache.jasper.JasperException: 无法为JSP编译类: 在运行java web项目时&#xff0c;启动tomcat服务器报这样的操作&#xff0c;一般就是tomcat版本跟jdk版本不兼容的问题。我用的是jdk17&#xff0c;经过查阅相关资料得出一般使用jdk8就可以解决此类问题 2.…