Spring Core 源码分析(1)
Spring Core 简介
参考 Spring 官网 介绍
spring core的主要功能为 IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.
其中 IoC Container是最重要的功能。
Inversion of Control (IoC) 和 Dependence Injection (DI)
IoC 是为了解决什么问题
在 OOP 语言编写的软件工程中, 必定有很多对象(Object), 这些对象直接又相互耦合, 组成复杂的软件系统. 如果特别多的对象直接, 过多的耦合关系, 对于编码人员来说, 维护这些耦合关系就显得有些困难了.
为了解决这种 OOP 软件工程中, 对象直接耦合关系的问题, Michael Mattsson 在1996年的文章 Object Oriented Frameworks: a survey on methodological issues 中提出了 IoC 理论, 通过"解耦"解决这个问题.
IoC 和 DI
见字识意, IoC 就是通过一种方法, 不用编码人员来手动维护对象直接的耦合关系 (否则,一般需要通过 new 关键字创建对象, 通过setter方法填充属性, 或者通过构造函数填充属性).
也就是, 这些对象的耦合, 交给了其他的东西(框架 / 通用设计模式 / 策略 ...)控制.
Dependence Injection (DI) 就是实现 IoC 的一种具体的 模式(pattern). 由 Martin Fowler 在2004年的文章Inversion of Control Containers and the Dependency Injection pattern 中提出.
可以理解为, IoC 是一种更加高级的抽象, 是一种解决过耦合问题的思想/理念(principle), DI是一种更加具体的实现方式, 更重于细节, 是一种模式(pattern). 虽然有人认为 IoC 也是一种模式 pattern, 但是这两个放在一起对比的时候, DI更加具体一些.
相应的, 除了 DI, 还要其他 模式(pattern) 可以实现 IoC 的理念. 例如: inversion-of-control
IoC 容器
IoC容器指框架级别的概念. Java体系中, 常见的有 Spring、Guice、Pico Container、EJB、JBoss等.
使用IoC容器注意
- 使用成熟的IoC框架
- 考量引入框架后, 团队学习和使用成本
- 考量引入框架后, 是简化了项目, 还是使项目变复杂.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)