Spring原码学习第一篇:Spring概述

news2024/11/16 3:28:36

1、Spring源码概述图:

在这里插入图片描述

2、一些重要的接口

在这里插入图片描述

3、Spring获取对象的过程

在这里插入图片描述
BeanDefinition中实现的方法,把xml中定义的对象封装为一个对象,方便后面处理
在这里插入图片描述

4、BeandefinitionReader

BeandefinitionReader作为一个抽象层来处理配置文件,定义规范,方面扩展,如果再有其他格式的配置文件的话,直接实现该接口即可。

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

5、BeanFactory接口

BeanFactory是访问Spring Bean的根接口

BeanFactory
Bean工厂,整个容器的根接口,也是容器的入口
Construct ctor = clazz.getConstructor();
Object obj = ctor.newInstance()

在这里插入图片描述
这几个接口要特别注意
在这里插入图片描述

6、 BeanFactoryPostProcessor登场

在容器创建过程中需要动态的改变bean的信息怎么办?
例如:<property name = url value = ${jdbc.url}
如果想要随时修改beanDeifinition怎么办?
答案:用 BeanFactoryPostProcessor

例如PlaceholderConfigurerSupport类如下:
在这里插入图片描述
自己实现BeanFactoryPostProcessor方法如下:
在这里插入图片描述
在这里插入图片描述
把beanDefinition信息修改完之后,就可以用反射进行实例化操作了。创建对象分为实例化和初始化。如下:
在这里插入图片描述

7、 设置Aware接口属性

Aware接口是什么作用?
当Spring容器创建的bean对象在进行具体操作的时候,如果需要容器中的其他对象,此时可以将对象实现Aware接口,来满足需要
在这里插入图片描述
在这里插入图片描述

8、 BeanPostProcessor:before、BeanPostProcessor:after 后置增强处理器

在这里插入图片描述

9、 对象的分类

对象分为两类:一类是普通对象,一类是容器对象
在这里插入图片描述
Spring需要的对象举例:
在这里插入图片描述
Bean 工厂实现应尽可能支持标准 Bean 生命周期接口。全套初始化方法及其标准顺序为:
在这里插入图片描述
在不同的阶段要处理不同的工作,应该怎么办?
观察者模式:监听器,监听事件,多播器(广播器)

10、 BeanFactory 和FactoryBean的区别

都是用来创建对象的;
当使用BeanFactory的时候必须要遵循完整的创建过程,这个过程是由Spring来管理控制的;
而使用FactoryBean只需要调用getObject就可以返回具体的对象,整个对象的创建过程是由用户自己来控制的,更加灵活。

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

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

相关文章

unity插件 -- UiEffect for UGUI

目录 1.简介 2. 脚本 3. 在线观看Demo 4.安装要求 5.使用方法 6.使用场景 7.插件下载 1.简介 UIEffect-upm是Unity中的一个插件&#xff0c;用于实现各种UI特效。它提供了许多常见的UI效果&#xff0c;如模糊、描边、阴影、发光等&#xff0c;可以轻松地为UI元素增添动…

Vue3子组件向父组件传递消息

父子组件之间的通信&#xff1a;props与emit 通常提到props&#xff0c;都会想到的是父组件给子组件传值&#xff1b;提到emit为子组件向父组件发送消息&#xff0c;但其实&#xff0c;props也可以使子组件向父组件传递消息 方式为在父组件中通过为子组件绑定属性&#xff0c…

代谢组学数据分析及网络药理学研究技术与实践

代谢组学是近年发展快速的一门学科&#xff0c;目前在医学、植物学、微生物学、毒理学、药物研发等多个领域中得到了广泛的应用。如何从复杂的代谢组学数据中提取出有价值的信息&#xff0c;筛选出潜在的生物标志物成为近年来代谢组学研究的热点和难点。网络药理学能够通过计算…

基于STM32的熏艾式空气消毒装置设计与实现(华为云IOT)

一、前言 艾叶自古以来都在中医中占据着重要地位,特别是在那个瘟疫横行、卫生设施条件落后的时代。而在如今的疫情时代,艾叶的实用功能依旧可以为我们所用。考虑到技术的发展,我们是否可以利用现代技术的高效性来对艾叶进行更加科学利用呢?可编程的嵌入式系统与传感器结合…

Linux学习之管道

管道和信号一样&#xff0c;也是进程通信的方式之一。匿名管道&#xff0c;也称为管道符&#xff08;“|”&#xff09;&#xff0c;用来把上一个命令的输出当成下一个命令的输入。使用vim pipeContent.txt&#xff0c;把下边的内容 1 11 2 22 3 33 4 44 5 6 7 8 9写到Redirec…

基于simulink从视频序列创建马赛克(附源码)

一、前言 此示例演示如何从视频序列创建马赛克。视频拼接是将视频帧拼接在一起以形成场景综合视图的过程。生成的马赛克图像是视频数据的紧凑表示。视频马赛克块通常用于视频压缩和监控应用。 此示例说明如何使用“角检测”块、“估计几何变换”块、“投影变换”块和“合成”…

Vue3+Vite+Pinia+Naive后台管理系统搭建之四:Naive UI 组件库的安装和使用

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步 Vue3.0 基础入门Vue3.0 基础入门快速入门。 UI 组件请参考官网&#xff1a;Naive Ui 官网 1. 安装依赖 yarn add naive-ui -D // or npm install naive-ui -D 2. 在 SFC (单文件组件) 中使用 直接引入&#xff08;推…

UnsatisfiedDependencyException: Error creating bean with name “dataSource” 异常排查

在写demo过程中&#xff0c;出现此异常&#xff0c;自己是按照以下步骤一个一个进行排查最终解决问题&#xff0c;希望能帮到碰到此问题的同学 : ) 1. 检查配置文件是否设置正常&#xff0c;是否配置了扫描类和配置文件路径 2. 检查是否设置MapperScan注解 3. 检查驱动版本和s…

c语言的变量

变量 我们可以直接声明一个变量&#xff0c;并利用这些变量进行基本的运算&#xff0c;声明格式为: 数据类型 变量名称 初始值&#xff1b; // 其中初始值可以不用定义变量时设定 // 是赋值操作&#xff0c;可以将等号后面的值赋值给前面的变量&#xff0c;等号后面可以直接…

SpringMVC集合

目录 SpringMVCSpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 SpringMVC入门&#xff08;1&#xff09;引入依赖&#xff08;2&#xff09;配置web.xml&#xff08;3&#xff09;创建请求控制器&#xff08;4&#xff09;创建SpringMVC的配置文件&#xff08…

[Docker] Docker学习和基本配置部署(一)

前言&#xff1a; Docker的作用是通过容器化技术实现快速、可移植和可扩展的应用程序部署与管理。 文章目录 引言容器化的基本概念Docker的背景产生Docker 配置和命令详解1. 安装 Docker2. Docker 配置3. Docker 命令 Docker的核心组件Docker在软件开发和云计算中的重要性Docke…

rancher

rancher&#xff08;牧场主&#xff09;简介&#xff1a; Rancher是一个开源的容器管理平台&#xff0c;它提供了一套完整的解决方案来管理和部署容器集群。它的目标是简化容器化应用的部署、管理和运维工作。 Rancher使用了开放标准的容器技术&#xff0c;如Docker和Kubernete…

C/C++实现高并发http服务器

http高并发服务器实现 基础知识 html&#xff0c;全称为html markup language&#xff0c;超文本标记语言。 http&#xff0c;全称hyper text transfer protocol&#xff0c;超文本传输协议。用于从万维网&#xff08;WWW&#xff1a;World Wide Web&#xff09;服务器传输超…

绝了!贸易企业增值税高,税负重怎么办?这些处理技巧请收藏!

绝了&#xff01;贸易企业增值税高&#xff0c;税负重怎么办&#xff1f;这些处理技巧请收藏&#xff01; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 贸易企业始终都逃脱不了税负重的问题&#xff0c;这是因为贸易企业自身的行业…

ChatGPT潮落 资金逃离AI概念股

ChatGPT访问量首次出现负增长&#xff0c;寒气传导到证券市场。 上半年经历暴涨的一众AI概念股偃旗息鼓&#xff0c;蓝色光标、三六零、昆仑万维等知名个股均较高点跌超30%。微软、英伟达也未能幸免&#xff0c;同样有不同程度回调。 回顾这波过山车般的市场表现&#xff0c;…

【JavaEE】你真的了解Cookie和Session吗?

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 一、什么是Cookie 二、什么是Session 三、Cookie和Session有什么不同 四、关于Sessionid 五、关于浏览器禁止Cookie 六、如何考虑分布式Session问题&#xff1f; 七、Serv…

springboot请求重定向失败问题解决方案

今天晚上在写登录页面时&#xff0c;发现自己的首页无法正常访问&#xff0c;用户名和密码正常的情况下还是无法访问首页。于是开始进行debug&#xff0c; 程序执行至此处时无任何异常&#xff0c;但是就是在进行重定向页面时出现了404&#xff0c;在检查导航栏后发现地址栏也发…

做好POC测试 需要重点关心的5点

在日常POC测试过程中&#xff0c;往往遇到&#xff1a;测试计划时间结束才达到测试目标&#xff0c;导致结果未记录&#xff1b;不了解测试达标要求&#xff0c;未达到测试要求&#xff0c;后期大量的工作进行补救&#xff1b;测试遇到的问题&#xff0c;没有充分地相互沟通等问…

Dell Inspiron 15-3567电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板Dell Inspiron 15-3567 处理器Intel Core i5 Kabylake, 7200U, 2.70 GHz已驱动 内存16GB LPDDR4X 3200MHz已驱动 硬盘三星 MZVLW1T0HMLH-000L2 (…

pycharm找不到conda可执行文件怎么办?

问题&#xff1a;pycharm配置conda环境找不到conda可执行文件 解决办法&#xff1a; 1. 找到 anaconda 安装目录&#xff08;D:\Users\wl\anaconda3&#xff09; 2. 打开pycharm &#xff08;看图吧<手动狗头>&#xff09; 找到anaconda3\condabin\conda.bat 选择你要…