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++企业应用开发实战》

相关推荐
码事漫谈27 分钟前
一条 ALTER TABLE 的跨库旅程:KFS 如何自动翻译 DDL
后端
captain37633 分钟前
Spring Web MVC入门(1)
ide·spring·java-ee·tomcat
Rain的Java大神之路40 分钟前
10 万人抢 2000 个座位,电影票选座系统怎么防超卖?一文讲透大厂高频场景题
java·后端·面试
武子康42 分钟前
用户说“算了”,设备指令真的取消了吗?
人工智能·后端·agent
砚底藏山河1 小时前
量化新手误区:因子计算与行情数据的工程化解耦
java·数据库·python·金融
威哥爱编程1 小时前
【AI全栈12-07】Spring Boot 用 Agent 自动完成多步运营任务
java·spring boot·后端
未秃头的程序猿1 小时前
我用 Spring AI + MCP 把公司内部系统接给了 AI,过程没想象中顺利
java·后端
m0_587383001 小时前
碰碰好评卡功能落地实战 从需求梳理到上线部署全流程实操指南
java·linux·服务器·前端·javascript·vue.js·人工智能
geovindu1 小时前
rust: Chain of Responsibility Pattern (续)
开发语言·后端·设计模式·rust·责任链模式·行为模式
诚心呈意共享外卖配送系统1 小时前
多平台订单聚合系统的技术架构:接 API 只是开始
java·开发语言·架构·系统架构·创业创新