当前位置: 首页 > news >正文

建筑行业官方网站办公门户网站模板

建筑行业官方网站,办公门户网站模板,赤峰市建设厅官方网站,网站建设 落地页目录前言一.BeanFactory快速入门1. BeanFactory创建Bean2. BeanFactory和ApplicationContext的关系3. 和ApplicationContext区别(高频问点)4. BeanFactory的继承体系5. ApplicationContext的继承体系二.Bean实例化的基本流程(重点)前言 首先感谢您的阅览&#xff0…

目录

  • 前言
  • 一.BeanFactory快速入门
    • 1. BeanFactory创建Bean
    • 2. BeanFactory和ApplicationContext的关系
    • 3. 和ApplicationContext区别(高频问点)
    • 4. BeanFactory的继承体系
    • 5. ApplicationContext的继承体系
  • 二.Bean实例化的基本流程(重点)

前言

首先感谢您的阅览,文章部分有个人思考与总结,难免会有遗漏之处,如有错误欢迎指正与补充,最后也希望您也能有所收获


一.BeanFactory快速入门

1. BeanFactory创建Bean

在这里插入图片描述
IOC控制反转,反转的是bean的创建权

结合上图有以下步骤:

1)导入Spring的jar包或Maven坐标;
2)定义UserService接口及其UserServiceImpl实现类;
3)创建beans.xml配置文件,将UserServiceImpl的信息配置到该xml中;
4)编写测试代码,创建BeanFactory,加载配置文件,获取UserService实例对象。


下面是用BeanFactory创建bean步骤

在这里插入图片描述

看到上面的创建过程是不是很熟悉,对只是比平时用ApplicationContext多一步而已,多了创建工厂对象,可以看到上图创建bean过程还是比较麻烦的,所以后面的ApplicationContext将其封装了,最后简化如下

在这里插入图片描述

可以看一下二者的关系(快捷键 CTRL + alt + u)

在这里插入图片描述


2. BeanFactory和ApplicationContext的关系

在这里插入图片描述

它是ApplicationContext的父接口
是Spring的核心容器,主要的ApplicationContext实现都组合了它的功能(BeanFactory实际上是ApplicationContext的成员变量


3. 和ApplicationContext区别(高频问点)

ApplicationContext(应用上下文)Spring的容器,其实它底层调用bean的操作还都是BeanFactory的。ApplicationContext内部封装了BeanFactory,比BeanFactory功能更丰富更强大

BeanFactory与ApplicationContext的区别

1)BeanFactory是Spring的早期接口,称为Spring的Bean工厂,ApplicationContext是后期更高级接口,称之为Spring 容器;

2)ApplicationContext在BeanFactory基础上对功能进行了扩展,例如:监听功能、国际化功能等。BeanFactory的API更偏向底层,ApplicationContext的API大多数是对这些底层API的封装;

3)Bean创建的主要逻辑和功能都被封装在BeanFactory中,ApplicationContext不仅继承了BeanFactory,而且ApplicationContext内部还维护着BeanFactory的引用,所以,ApplicationContext与BeanFactory既有继承关系,又有融合关系。

4)Bean的初始化时机不同,一个延迟加载,一个立即加载。原始BeanFactory是在首次调用getBean时才进行Bean的创建,而ApplicationContext则是配置文件加载,容器一创建就将Bean都实例化并初始化好。

在这里插入图片描述


4. BeanFactory的继承体系

BeanFactory是核心接口,项目运行过程中肯定有具体实现参与,这个具体实现就是DefaultListableBeanFactory,而ApplicationContext内部维护的Beanfactory的实现类也是它


在这里插入图片描述


5. ApplicationContext的继承体系

只在Spring基础环境下,即只导入spring-context坐标时,此时ApplicationContext的继承体系

在这里插入图片描述

spring环境下常用的三个ApplicationContext作用如下:

在这里插入图片描述


二.Bean实例化的基本流程(重点)

bean的实例化总共以下5步,看明白了可以说是拨云见日,前后知识点都能衔接

①Spring容器在进行初始化时,会将xml配置的的信息注意此时封装的不是对象,而是xml中对象配置的信息比如属性之类)封装成一个BeanDefinition对象(bean定义对象)
封装的是bean标签也就是下面这样的
在这里插入图片描述


②将所有的BeanDefinition存储到一个名为beanDefinitionMap的Map集合中去,Spring框架再对该Map进行遍历,取出每个BeanDefinition对象,拿到BeanDefinition内部封装的信息,主要是拿bean的类名(因为后面要根据反射来创建bean对象的,反射忘记了可以看看这篇:Java反射使用介绍)
在这里插入图片描述

你想知道beanDefinitionMap的Map集合是什么吗,我在翻源码时看到了它的位置,也就是DefaultListableBeanFactory中定义的一个map集合,转专门存放bean标签对象的,而DefaultListableBeanFactory又是BeanFactory的实现类,就是在BeanFactory中维护,所以你应该懂了吧。


③使用反射创建Bean实例对象


④创建好的Bean对象存储在一个名为singletonObjects(单例池,也在BeanFactory中维护)的Map集合中


⑤当调用getBean方法最终从该Map集合中取出Bean实例对象返回


最后断点调试验证说明

在这里插入图片描述

在这里插入图片描述

所以说,beanDefinitionMap和singletonObjects都是在beanFactory中维护的

最后这个bean创建的基本流程可以总结为下图,后续扩展功能也是在下图中不断扩容

在这里插入图片描述


http://www.yayakq.cn/news/510470/

相关文章:

  • 张家港网站开发培训广告代理公司网站建设一条
  • 翻译软件翻译英语做网站专注于网络推广及网站建设
  • 网站建设人员性格特点免费留电话的广告
  • 移动网站开发与维护简述电子商务网站的内容设计与开发
  • 菏泽汽车网站建设用区块链来做网站
  • 深圳建站工作室wordpress水果商城主题
  • 柳州市建设投资开发公司网站网站ui界面设计软件
  • 产品开发流程及每个流程内容东莞百度快速优化排名
  • 长宁网站设计网站哪些页面会做静态化
  • 电商网站建设代码大全如何做短视频自媒体赚钱
  • 四川响应式网站哪家好设计素材网站导航大全
  • iis7 网站用户权限上海有哪些互联网大厂
  • 淄博高端网站建设wordpress免费别人无法访问
  • 百度站长收录入口app企业开发公司
  • 天水网站开发石家庄模板建站系统
  • 九冶建设有限公司官方网站在百度怎么创建自己的网站
  • 外贸网站模板大全中国供求网
  • 手机的网站有哪些深圳十大高科技企业
  • 网站怎么制作成二维码东莞智通人才网官网首页
  • 东莞南城网站建设价格营销型网站建站步骤是什么意思
  • 做网站有什么比较好看的动效外贸seo网站开发
  • 传统企业营销型网站建设佛山网站设计建设
  • 外贸网站 免费模板 使用 zencart阿里企业邮箱设置
  • 域名禁止网站相关中小企业网络营销现状
  • 学校网站建设设想人才交流网站建设与设计
  • 单位网站服务的建设及维护如何设计网站的首页
  • 长沙做网站建设公司哪家好查分网站制作
  • 做dj网站能赚钱吗dw网页编辑器
  • 海外房地产网站建设怎么免费创建自己的网站平台
  • 西部数码网站管理系统中国住房和城乡建设部网站官网