Spring之 IoC、BeanFactory、ApplicationContext

IoC (Inverse of Control)

IoC ,也就是 控制反转。

对于软件来说,即某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,即由Spring容器借由Bean配置来进行控制。

Martin Fowler提出了DI(Dependency Injection,依赖注入)的概念用来代替IoC, 即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。

loC的类型

Spring的 IoC 支持构造函数注入和属性注入。

Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系。
Spring的IoC容器在完成这些底层工作的基础上,还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。

BeanFactory

Bean工厂(com.springframework.beans…factory…BeanFactory)是Spring框架最核心的接口,它提供了高级IoC的配置机制。BeanFactory使管理不同类型的Java对象成为可能。一般称BeanFactory为IoC容器。

而BeanFactory是类的工厂,它可以创建并管理各种类的对象。
Spring 称这些被创建和管理的Java对象为Bean。

ApplicationContext

应用上下文(com.springframework.context…ApplicationContext)建立在BeanFactory基础之上,提供了更多面向应用的功能,易于创建实际应用。我们称ApplicationContext为应用上下文。

BeanFactory和ApplicationContext 的区别

  • BeanFactory 是Spring框架的基础设施,面向Spring本身;
    ApplicationContext 面向使用Spring框架的开发者,开发中可以直接使用 ApplicationContext。

  • ApplicationContext的初始化和 BeanFactory有一个重大的区别:BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例化目标Bean;而ApplicationContext则在初始化应用上下文时就实例化所有单实例的Bean。

参考资料

《精通Spring+4.x++企业应用开发实战》

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

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

相关文章

快速解决找不到krpt.dll,无法继续执行代码问题

对于那些遇到计算机开机出现由于无法找到krpt.dll,进而无法继续执行代码问题的用户。 krpt.dll是计算机系统中与DirectX紧密相关的重要文件,如果它出现问题,可能会对一些特定的软件或游戏的运行产生影响。实际上,我们有多种解决该…

在CentOS和Ubuntu云服务下搭建Git版本控制器管理系统

目录 0.Git背景 1.在CentOS下安装Git 2.在Ubuntu下安装Git 3.安装git和图形化界面工具_哔哩哔哩_bilibili 0.Git背景 不知道你⼯作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防⽌⽂档丢失,更改失误&#xff…

无需服务器,浏览器跑700+AI模型?!【送源码】

Transformers.js 是一个创新的网络机器学习库,它将先进的 Transformer 模型直接带入浏览器,无需服务器端支持。这个库与 Hugging Face 的 Python transformers 库功能对等,提供相似的 API 接口来运行预训练模型,涵盖了自然语言处理…

mysql signed unsigned zerofill详解

灵感来源 mysql中有符号signed,无符号unsigned与零填充zerofill UNSIGNED 无符号UNSIGNED是一个属性,你可以在创建或修改表时为整数类型的列指定它。无符号属性意味着该列只能存储非负整数(0和正整数),而不是默认的有…

docker部署onlyoffice,开启JWT权限校验Token

原来的部署方式 之前的方式是禁用了JWT: docker run -itd -p 8080:80 --name docserver --network host -e JWT_ENABLEDfalse --restartalways onlyoffice/documentserver:8 新的部署方式 参考文档:https://helpcenter.onlyoffice.com/installation/…

C9联盟是什么?

九校联盟(C9 League),简称C9联盟,是中国首个顶尖大学间的高校联盟,于2009年10月正式启动。 其成员都是国家首批“985工程”重点建设的一流大学,包括北京大学、清华大学、哈尔滨工业大学、复旦大学、上海交通…

c++ primer plus 第15章友,异常和其他:15.2.2模板中的嵌套

c primer plus 第15章友,异常和其他:15.2.2模板中的嵌套 15.2.2模板中的嵌套 文章目录 c primer plus 第15章友,异常和其他:15.2.2模板中的嵌套15.2.2模板中的嵌套程序清单15.5 queuetp.h程序清单15.6 nested.cpp 15.2.2模板中的…

撸包广告小游戏app开发对接广告联盟

以下是开发对接广告联盟的撸包广告小游戏 APP 的大致步骤: 需求分析 明确小游戏的类型、玩法和目标用户群体。确定所需的广告展示形式和位置。 技术选型 选择适合的开发框架和编程语言,如 Unity 搭配 C# 等。确定服务器架构和数据库方案。 游戏开发 设计…

五.RocketMQ理论及常见问题处理方案

RocketMQ的架构理论及底层原理 一:生产消息1.消息生产过程2.Queue选择算法 二:存储消息2.1存储介质2.2消息的存储和发送2.3消息存储结构2.4刷盘机制 三:消费消息1 获取消费类型2 消费模式3 Rebalance机制4.Queue分配算法 四:消息清…

078、Python 中的枚举类型

初识 在Python中,没有定义枚举类型的语法,但是可以通过继承Enum类来实现枚举类型。所以在Python中的枚举,就是一种特殊的类,用于表示一组常量,这些常量在定义后就不能被改变。 枚举的使用可以使代码更加清晰易读和易…

html+css+JavaScript 实现两个输入框的反转动画

开发时遇到了一个输入框交换的动画 做完之后觉得页面上加些许过渡或动画,其变化虽小,却能极大的提升页面质感,给人一种顺畅、丝滑的视觉体验。它的实现过程主要是通过css中的transition和animation来实现的。平时在开发的时候增加一些动画效…

C语言:高级并发操作(信号)

引言 同步和异步的使用。 异步事件处理的两种方法:查询法、通知法。(单核机器不存在异步) 一、信号 1. 信号的概念 信号是软件中断。信号的响应依赖于中断。中断是底层硬件的机制。 2. signal函数 kill -l命令查看所有的信号。1 -31 属…

使用qt creator配置msvc环境(不需要安装shit一样的宇宙第一IDE vs的哈)

1. 背景 习惯使用Qt编程的童鞋,尤其是linux下开发Qt的童鞋一般都是使用qt creator作为首选IDE的,通常在windows上使用Qt用qt creator作为IDE的话一般编译器有mingw和msvc两种,使用mingw版本和在linux下的方式基本上一样十分简单,不…

如何在Ubuntu环境下使用加速器配置Docker环境

一、安装并打开加速器 这个要根据每个加速器的情况来安装并打开,一般是会开放一个代理端口,比如1087 二、安装Docker https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script 三、配置Docker使用加速器 3.1 修改配置…

UE5 04-重新加载当前场景

给关卡加一个淡出的效果 给关卡加一个淡入的效果, 这个最好放置在Player 上,这样切关卡依然有这个效果

防火墙基础及登录(华为)

目录 防火墙概述防火墙发展进程包过滤防火墙代理防火墙状态检测防火墙UTM下一代防火墙(NGFW) 防火墙分类按物理特性划分软件防火墙硬件防火墙 按性能划分百兆级别和千兆级别 按防火墙结构划分单一主机防火墙路由集成式防火墙分布式防火墙 华为防火墙利用…

Qt 关于字节流可否嵌套的一个实验

1.可否嵌套方案 1.1 概要 * 需求:数据头数据体校验码数据尾 * 校验码的生成只与数据体相关 * 可否通过QByteArray的嵌套实现这个功能呢, * 最终失败: * 理由一个char*的整体内存是无法再头部插入输入的。 * 那么只能靠生成校验码的时候…

creature_equip_template

creature_equip_template CreatureID 链接 creature_template.entry ID creature 装备模板编号 一个 creature entry 可以有多个装备模板如有多个装备模板,从1开始依次递增1 ItemID1 - ItemID3 装备模板使用的装备id,取值参见 ItemSparse.db2 | Item.db2…

什么是数据分析?数据分析如何创造企业发挥价值?

数据分析是在具体的业务场景下,如何借助工具,通过数据解决问题的思路 数据底层的四大优势 1.可反复读取和使用 2.客观 3.量化 4.机器可处理 使用数据指导业务,基于数据量化生产 只要是基于量化的信息提升生产力,就是数据分析&a…

MySQL-18-mysql source 执行 sql 文件时中文乱码

拓展阅读 MySQL 00 View MySQL 01 Ruler mysql 日常开发规范 MySQL 02 truncate table 与 delete 清空表的区别和坑 MySQL 03 Expression 1 of ORDER BY clause is not in SELECT list,references column MySQL 04 EMOJI 表情与 UTF8MB4 的故事 MySQL 05 MySQL入门教程&a…